我編寫簡單的類表示未經過校正的圖。我想有一個私有類成員 - 指向動態分配的數組集。數組中的每個集合表示與具有相應數組索引號的頂點相鄰的頂點。還有兩個構造函數:一個以數組大小(頂點數)作爲參數,第二個 - 從文件中讀取。 我想使用boost :: shared_ptr來管理分配的內存。 Boost文檔說:保存動態分配數組的C++ shared_ptr
與加速釋放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處理動態分配的數組初始化? Ang當我在第二個構造函數體內收到它的大小時如何初始化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?
}
我可以做得更好嗎?
這會呼叫'刪除[]'根據需要? – juanchopanza