我需要帮助来定义我的 Deque 类型的 STD 容器的最大大小。
在这种情况下,我必须在数据结构中的给定子项中存储最大数量的客户端,如下例所示:
typedef struct Cart {
int id;
string clientName;
int numberOfProducts;
double purchaseValue;
} Cart;
我定义了一个常量:
#define MAX_CLIENT 10
我将要定义队列,队列最多必须有 10 个客户端:
deque<Cart> BOX_1(MAX_CLIENT);
deque<Cart> BOX_2(MAX_CLIENT);
deque<Cart> BOX_3(MAX_CLIENT);
但结构似乎还是动态的,甚至定义了最大数量。
感谢您的贡献。
最佳答案
I'm about to define the queues, which must have a maximum of 10 clients:
deque<Cart> BOX_1(MAX_CLIENT);
澄清一下,这会创建一个包含 10 个购物车的双端队列最初。
How to set a maximum size for my container Deque with C ++?
std::deque
不支持此类功能。无法为其设置最大尺寸。没有任何标准容器支持此类功能(技术上 std::array
具有固定大小除外)。
您可以自己编写一个支持此类功能的自定义容器。如果您愿意,可以在自定义容器的实现中使用标准容器。一个最小的例子,它既不完整也不完善:
struct MaxContainer {
void push_front(Cart c) {
if (internal_container.size() < max_size)
internal_container.push_front(std::move(c));
else
; // do something else
}
private:
int max_size;
std::deque<Cart> internal_container;
}
您甚至可以创建一个容器适配器,它可以适应任何容器(有限制)并通过模板化内部容器类型为其添加最大尺寸。
也就是说,您不一定需要有一个强制执行大小限制的容器。相反,您可以简单地避免在使用它的代码中向容器中添加更多元素。
关于c++ - 如何使用 C++ 为我的容器 Deque 设置最大大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52762339/