c++ - 就地构造一个包含元素的 vector

标签 c++ c++14

我有一个智能指针 vector 。到目前为止,我可以像这样在循环中构造它们:

std::vector<std::unique_ptr<int>> v(10);
for (int i = 0; i < 10; ++i)
    v.emplace_back(std::make_unique<int>());

虽然我不想这样做。我想要如下内容:

std::vector<std::unique_ptr<int>> v(10, std::make_unique<int>());

这是行不通的。似乎 vector 只有一个构造函数可以创建拷贝或默认插入。那我能做到吗?如果答案是否定的,原因是什么?将来我希望看到一个允许上述操作的构造函数。

最佳答案

您可以使用算法生成:

std::vector<std::unique_ptr<int>> v(10);
std::generate (v.begin(), v.end(), []() { return std::make_unique<int>(); });

关于c++ - 就地构造一个包含元素的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29064613/

相关文章:

C++ lambda : how to avoid slicing a reference if captured by value

c++ - 如何用 0 memset 匿名 union

c++ - 使用现有 C 程序编写 Qt 程序时未找到符号

c++ - 使用 qcompleter 自动完成单词中间的片段

c++ - 如何识别和计算字符串流中的唯一字符

c++ - 我如何使用比系统提供的更新版本的 clang 链接到线程清理器?

c++ - boost 范围适配器变平

c++ - 在没有 SFINAE 的情况下启用类方法

c++ - 函数重载和函数指针

c++ - Fortran 中 REAL(KIND=real_normal) 的 C 等效类型是什么?