В настоящее время я действительно застрял в том, как решить следующую проблему:
struct node {
int a;
node* b;
}
У меня будет два корневых узла без родителей, а затем еще несколько узлов, указывающих на их родителей
vector<node> IholdAllTheNodes;
node noparent1; <--- these get returned from a method
node noparent2;
IholdAllTheNodes.pushback(noparent1);
IholdAllTheNodes.pushback(noparent2);
node withparent1; <---- i am happily points to noparent1
node withparent2; <-----i am happily points to noparent2
Никаких проблем, все работает потрясающе
IholdAllTheNodes.pushback(withparent1) <<<< oops this causes all the pointers to move.
теперь родительские узлы больше не указывают на своих родителей, потому что я их переместил.
Мой вопрос заключается в том, как просто добавить больше узлов в мой вектор узлов, не перемещая указатели исходных узлов. (Я не могу получить фиксированный размер для вектора)
если у кого-то есть время, чтобы объяснить, почему, несмотря на добавление pushback в конец списка векторов, местоположение предыдущей информации меняется?