我需要帮助定义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);
但是似乎结构仍然是动态的,甚至定义了最大数量。
感谢您的贡献。
答案 0 :(得分:4)
我要定义队列,该队列最多必须有10个客户端:
deque<Cart> BOX_1(MAX_CLIENT);
为澄清起见,此操作会创建一个初始包含10个购物车的双端队列。 。
如何使用C ++为我的容器Deque设置最大大小?
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;
}
您甚至可以创建一个容器适配器,该容器适配器可以(有限制)适应任何容器,并只需对内部容器类型进行模板化即可为其添加最大大小。
也就是说,您不一定需要具有用于强制大小限制的容器。相反,您可以简单地避免在使用容器的代码中向容器中添加更多元素。