путаница распределения векторов - PullRequest
3 голосов
/ 07 ноября 2011

У меня есть класс Tree следующего типа

class Tree{
   private:
        Node *root;                         // trie root node 
        unordered_map<int, vector<Node*> > *index; 
        unsigned long long size;
        int count;
    public:
    ................
};

У меня есть вектор следующего типа

vector<Tree> vect;

С приведенным выше объявлением я сталкиваюсь с ошибкой сегментации, когдаколичество узлов добавляется к каждому дереву.

Но то же самое прекрасно работает, когда я использую следующее объявление

vector<Tree*> vect;

и выделяю каждый указатель дерева * явно в куче, используя new

Ошибка сегментации выглядит так, как будто она возникает из-за чрезмерного использования стека.

И из предыдущего вопроса о переполнении стека мне сказали, что в первом объявлении каждый объект Tree будетвыделено в куче.

Есть мысли по этому поводу?

1 Ответ

4 голосов
/ 07 ноября 2011

Я полагаю, у вас проблемы с конструктором копирования и оператором = с вашим небольшим кодом.Каждый раз, когда вы добавляете новый элемент в свой вектор, происходит вызов копирования.В случае вектора указателей проблем нет, но с вашим классом у вас будут проблемы с указателем и картой.Реализуйте эти методы правильно и попробуйте снова.

...