删除操作会删除整个列表

时间:2015-02-20 23:22:59

标签: c++ list

我不明白为什么这条指令会删除列表中的所有元素

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

z和d是这些: ž 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(); }

1 个答案:

答案 0 :(得分:0)

如果remove(在您的情况下为d)的参数与列表中的每个元素相等,则整个列表将被“删除”。这显然就是你的情况。

您的列表似乎包含类类型Node<char, unsigned long>的对象。您是否正确地为这些==对象编写了等式比较运算符Node