У меня есть очень простой метод, который добавляет узел к графику:
template<class T>
void AdjacencyList<T>::add(const GraphNode<T>& node) {
_nodes.push_back(node);
}
В другом методе я перебираю вектор _nodes
, ища добавленный узел по адресу:
for (unsigned int i = 0; i < _nodes.size(); i++) {
if (&(_nodes[i]) == &node)
// do something
}
Однако это не работает, потому что, когда я добавляю node
к вектору _nodes
, добавленный член имеет другой адрес:
Graph::AdjacencyList<int>::add (this=0x8052338, node=...) at ../AdjacencyList.h:42
42 _nodes.push_back(node);
(gdb) p node
$1 = (const Graph::GraphNode<int> &) @0xbffff39c: {value = 123}
(gdb) n
43 }
(gdb) p _nodes[0]
$4 = (Graph::GraphNode<int> &) @0x80522b0: {value = 123}
Что в мирездесь происходит?И что еще более важно, как мне добавить члена в вектор, чтобы я мог найти его позже?