繁体   English   中英

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

[英]how to remove an item from a std::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));
  }

我该如何工作?

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

您可以通过存储指向对象的指针来避免这种情况,并且在调用removelist将比较指针。 由于指针只是数字,所以比较没有问题。

a.remove(pA);

正如Esthete所建议的那样,您需要A重载operator == ,或者使用remove_if ,这可以接收谓词并将谓词传递给它。 http://cplusplus.com/reference/stl/list/remove_if/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM