c++ - 如何使用 C++ 为我的容器 Deque 设置最大大小?

标签 c++ c++11 data-structures

我需要帮助来定义我的 Deque 类型的 STD 容器的最大大小。

Deque Documentation C++

在这种情况下,我必须在数据结构中的给定子项中存储最大数量的客户端,如下例所示:

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/

相关文章:

c++ - 带有Rcpp头文件的c++文件的编译步骤

c++ - 如何使用 tpl 序列化 "std::string"

c++ - 多态性和 shared_ptr 通过引用传递

algorithm - 从无限大的列表/数组中的短列表/数组中查找 char 的出现次数

c++ - 如果不推荐使用 std::iterator ,我们还应该使用需要 std::iterator 的类或函数吗?

templates - C++/C++11 - 可变参数模板的 Switch 语句?

c++ - 具有多个参数的绑定(bind)函数导致 C2027

c++ - mysql C++ 不会用 make 编译,但如果 g++ 参数放在 cmd 行

c - 在链表的末尾插入一个节点

Java练习: Printing asterisks Triangle and its inverted triangle using recursion method