Я пишу простой класс, представляющий граф без ограничений. Я хотел бы иметь частный член класса - указатель на динамически выделенный массив множеств. Каждый набор в массиве представляет вершины, смежные с вершиной с соответствующим номером индекса массива. Также есть два конструктора: один выбранный размер массива (количество вершин) в качестве параметра, второй - чтение его из файла. Я хочу использовать boost :: shared_ptr для управления выделенной памятью. Подталкивания документация говорит:C++ shared_ptr, содержащий динамически распределенный массив
Начиная с выпуском 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 обработка динамически распределенной инициализации массива? 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