C++ 向量 remove_if 对

C++ vector remove_if pairs

我正在尝试使用 remove_if 从向量中删除对,但出现错误

bool MyClass::isSingleTag(const pair<int,string> & val) {
   string tag = val.second;
   int posImg, posBr;
   posImg = tag.find("<img");
   posBr = tag.find("<br");
   if (posImg == -1 && posBr == -1) {
      return false;
   } else {
      return true;
   }
}
void MyClass::deleteSingleTags() {
   vector<pair<int,string>>::iterator last_iter;
   last_iter = remove_if(allTags.begin(), allTags.end(), &MyClass::isSingleTag);
   allTags.erase(last_iter, allTags.end());
}

错误:http://pastebin.com/1FCWRVDG

如果没有 class 函数所属的对象,则无法调用指向成员函数的指针。

Make isSingleTag static - 获取它的地址会产生一个普通的函数指针。或者,使它成为一个自由函数,因为看起来它首先作为一个成员函数没有任何业务(它不访问任何其他成员,是吗?)。

另一个选项(当你合法地需要成为成员函数时)是将它绑定到一个 class 对象,使用 std::bind:

MyClass obj;
auto func = std::bind(&MyClass::isSingleTag, obj);

现在 func 是一个可以传递给算法的可调用对象。