Ten en cuenta qué, siguiendo la propuesta que te da eferion
Código C++:
Ver originalstd::vector<std::unique_ptr<SuperNode>> _neighbor;
...
Tienes un vector de punteros inteligentes que a apuntan a SuperNodos. Si aumenta la dimensión del vector y se cambia sus posiciones en memoria, lo que cambian son las posiciones de memoria dónde se guardan los punteros inteligentes que apuntan a los nodos, no la dirección de memoria en las que se guardan los SuperNodos.
Por lo cual mientras lo que vayas almacenando sea el puntero del SuperNodo(ya sea raw(*), shared o weak) en las otras estructuras o una referencia al SuperNodo y no un iterador o referencia sobre el vector no deberías de tener problema.