如何从std :: list中删除一个项目

时间:2012-08-31 15:46:00

标签: c++ list

我的代码:

using namespace std;

class A{public: 
  int a; 
  A(int itemA) {a=itemA;}
};
class B:A{public:
  int b; 
  B(int itemA, int itemB) {a=itemA; b=itemB;}
};

class C{
  list<A> a;
  list<B> b;
  void transferAB(const A& pA, int itemb){
    a.remove(pA);
    b.push_back(B(pA.a, itemb));
  }

如何让这件事有效?

2 个答案:

答案 0 :(得分:2)

list不知道如何比较您的对象。您需要为类指定相等运算符(operator==)。

您可以通过将指针存储到对象来避免这种情况,list会在您调用remove时比较指针。由于指针只是数字,因此比较没有问题。

答案 1 :(得分:1)

a.remove(pA);

您需要为Esthete建议的operator ==重载A,或使用remove_if,即接收谓词并将谓词传递给它。 http://cplusplus.com/reference/stl/list/remove_if/