Ваша итерация над контейнером неверна.Если node
является членом класса, игнорируйте его, поскольку деструктор вектора позаботится об этом.Если он не является членом, и вы действительно хотите удалить все элементы, самое простое - вызвать node.clear()
(обратите внимание, что оба кода эквивалентны вашему коду, но они утечут указанную память, если им будет управлять ваш класс)
Если указатели управляются вашим классом, рассмотрите возможность использования интеллектуальных указателей или специальных контейнеров указателей.В противном случае простейшим циклом освобождения всей памяти будет:
for ( std::vector<Node*>::iterator it = nodes.begin(); it != nodes.end(); ++it )
delete *it;
Обратите внимание, что я не изменял сам контейнер, только содержащиеся в нем элементы.