gpt4 book ai didi

C++ vector remove_if 对

转载 作者:行者123 更新时间:2023-11-28 02:33:50 25 4
gpt4 key购买 nike

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

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

最佳答案

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

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

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

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

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

关于C++ vector remove_if 对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28198560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com