2015-02-20 2 views
-1

Я не понимаю, почему эта команда удаляет все элементы в спискеОперация удаления удаляет весь список

z->data().remove(d); 

г и d таковы: Z enter image description here D enter image description here

std::list<Data>& data()const{return this->d;}; 

Это сравнение равенства

template <class Key, class Data> 
bool operator== (const Node<Key,Data>& lhs, const Node<Key,Data>& rhs) 
{ return lhs.key()==rhs.key() && lhs.data()==rhs.data(); } 
+0

Как реализовано сравнение равенства для объектов «Node»? – AnT

ответ

0

Если аргумент remove (d в вашем случае) сравнивается с каждым элементом списка, весь список будет «удален». По-видимому, это происходит в вашем случае.

Ваш список содержит объекты типа класса Node<char, unsigned long>. Вы правильно написали оператор сравнения равенства == для этих Node объектов?

Смежные вопросы