c++ - 在 C++ 中创建 vector 的 shared_ptr

标签 c++ c++11 vector std

<分区>

在现代 C++ 中,我们可以像这样初始化一个 vector :

std::vector<int> v = { 1, 2, 3, 4, 5 };

但是如果我尝试创建一个指向 vector 的智能指针,这将无法编译:

auto v = std::make_shared<std::vector<int>>({ 1, 2, 3, 4, 5 });

有没有比在创建后求助于 push_back 更好的选择?

最佳答案

auto v = std::make_shared<std::vector<int>>(std::initializer_list<int>{ 1, 2, 3, 4, 5 });

这是有效的。看起来编译器不能在没有直接指定 initializer_list 的情况下吃掉 make_unique 参数中的 {}。

小修改 - 使用 MSVC 2015

关于c++ - 在 C++ 中创建 vector 的 shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34769617/

相关文章:

c++ - MISRA C++ 规则 14-5-1:(不要在关联的命名空间中声明泛型函数)是否适用于 std::operator<<?

c++ - 如何在 FLTK Multiline_Input 中自动在文本末尾添加换行符?

c++ - 我应该用什么值填充数组以指示空白?

c++ - std::enable_if 在 Visual Studio 2013 中没有按预期工作

math - 从带有 x 轴的向量计算角度(梯度)

C++ Java static final 等价物

c++ - 从初始化列表初始化,但没有 {{{{{{{{ ... }}}}}}}}?

c++ - 为 std::unordered_map 中的 const std::reference_wrapper 重载 operator==

c++ - 我正在尝试创建一个类 vector ,然后用 for 循环命名每个类

JavaScript 向量旋转