如何在C++中创建shared_ptr列表?

Gam*_*007 1 c++ list shared-ptr

假设我有几个 MyObject 类型的对象,并且我希望有相应的shared_ptr 指向它们中的每一个。然后,我想获取所有这些指针并将它们放入一个列表中 - 我该怎么做?

(我说的是这样的事情:

list<shared_ptr<MyObject>> MyList;
Run Code Online (Sandbox Code Playgroud)

但这显然行不通)

另外 - 列表是一个可增长的容器吗?或者我在创建它时必须声明它的大小吗?

谢谢!

Joh*_*erg 5

它只是有效

#include <iostream>
#include <list>
#include <memory>

struct MyClass{
  int a;
};

int main() {
    std::list<std::shared_ptr<MyClass>> myList;
    myList.push_back(std::make_shared<MyClass>());
    myList.push_back(std::make_shared<MyClass>(3));        
}
Run Code Online (Sandbox Code Playgroud)

哦,如果你没有充分的理由(措施),请使用 std::vector。

  • 旧编译器/错误选项?share_ptr 随 C++11 一起提供。 (2认同)