<分区>
在现代 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
更好的选择?
<分区>
在现代 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++ - std::enable_if 在 Visual Studio 2013 中没有按预期工作
c++ - 从初始化列表初始化,但没有 {{{{{{{{ ... }}}}}}}}?
c++ - 为 std::unordered_map 中的 const std::reference_wrapper 重载 operator==