我编写了表示无向图的简单类。我想要一个私有类成员 - 指向动态分配的集合数组的指针。数组中的每个集合表示与具有相应数组索引号的顶点相邻的顶点。还有两个构造函数:一个将数组大小(顶点数)作为参数,第二个 - 从文件中读取它。我想使用 boost::shared_ptr 来管理分配的内存。Boost文档说:
从 Boost 1.53 版开始,shared_ptr 可用于保存指向动态分配数组的指针
我创建了一个类成员和两个构造函数:
boost::shared_ptr<std::set<int>[]> adj;
...
Graph(unsigned int vertices);
Graph(std::ifstream& inputStream); // read
如何初始化我的 shared_ptr,对于第一个构造函数,我使用初始化列表:
Graph::Graph(unsigned int vertices)
:adj(new std::set<int>[vertices]),
vertexCount(vertices){
}
是否正确 shared_ptr 处理动态分配的数组初始化?当我在第二个构造函数的主体中收到它的大小时,如何初始化 shared_ptr?
Graph::Graph(std::ifstream& inputStream){
inputStream >> std::dec >> vertexCount; // read vertex count from file
// how to init shared_ptr with vertexCount array size?
}
我能做得更好吗?