【发布时间】:2019-01-14 00:15:12
【问题描述】:
我在寻找从指针向量中擦除值的方法时遇到了一些麻烦。
我有一个向量std::vect<MyClass*> myVect,其中包含指向对象o1, o2,... 的指针,按特定顺序。我很难找到如何删除一个特定对象的条目,例如o1
我试过了
void remove(MyClass C)
{
myVect.erase( std::find_if( myVect.begin(), myVect.end(), [&](MyClass* W)
{return &C == W;} ) );
}
但是我的 bool lambda 永远不会返回 true (verified with assert) 。有什么我做错了吗? (我必须说我对 Lambda 函数/tors 不是很熟悉)
非常感谢!
【问题讨论】:
-
显然,由于 C 是按值传递的,并且您将该对象的地址与
myVect中的地址进行比较,它基本上永远不会匹配。也许,您想比较项目值,或者您可能想将指针传递给您的删除函数。 -
试试
C == *W作为测试