【问题标题】:How to initialize a queue with n default values?如何用 n 个默认值初始化队列?
【发布时间】:2015-03-16 19:47:01
【问题描述】:

假设我有一个带有默认构造函数的类。如何通过设置队列的大小和默认值在构造函数中初始化队列。

class StandardClass
{};

// will initialize a vector with 5 default standard class 
std::vector<StandardClass> vec(5, StandardClass()); 

我如何对队列做同样的事情?

std::queue<StandardClass> que(5, StandardClass()); ???

【问题讨论】:

  • 据我所知,没有等效的构造函数。
  • 该代码不是有效的 C++ :-(

标签: c++ c++11 stl queue


【解决方案1】:

如果您查看例如this std::queue constructor reference 你会看到你可以传递一个底层容器的实例(默认为std::deque)。

所以你应该可以做类似的事情

std::queue<StandardClass> que(std::deque<StandardClass>(5));

【讨论】:

    【解决方案2】:

    你可以这样做

    std::queue<StandardClass> que
        ( std::queue<StandardClass>::container_type( 5, StandardClass()  ) );
    

    或者更简单

    std::queue<StandardClass> que
        ( std::queue<StandardClass>::container_type( 5 ) );
    

    【讨论】:

    • @user2822838 考虑到我展示的示例是最正确的,因为它不依赖于底层容器。
    猜你喜欢
    • 2012-12-16
    • 1970-01-01
    • 2014-12-29
    • 2020-02-08
    • 2017-11-22
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 2014-05-06
    相关资源
    最近更新 更多