我有一个智能指针 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/