gpt4 book ai didi

c++ - 在集合中使用 find_if

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:51 28 4
gpt4 key购买 nike

在我的 main.cpp 中:

using namespace std;
#include <cstdlib>
#include <iostream>
#include <set>
#include <string>
#include <cstring>
#include <sstream>
#include <algorithm>

class findme
{
public:
bool operator()(const std::string& s) {
return s == "tom";
}
};

int main(int argc, char *argv[])
{
set<string> myset;
myset.insert("tom");
myset.insert("jerry");
cout << myset.size();
set<string>::iterator it;
if (find_if(myset.begin(), myset.end(), findme())) {
cout << "found tom \n";
}
return EXIT_SUCCESS;
}

编译程序时出现错误:

Could not convert std::find_if [with _InputIterator = std::_Rb_tree_const_iterator<std::string>, _Predicate = findme]((&myset)->std::set<_Key, _Compare, _Alloc>::begin [with _Key = std::string, _Compare = std::less<std::string>, _Alloc = std::allocator<std::string>](), (&myset)->std::set<_Key, _Compare, _Alloc>::end [with _Key = std::string, _Compare = std::less<std::string>, _Alloc = std::allocator<std::string>](), (findme(), findme()))' to 'bool'

任何人都可以告诉我我哪里错了吗?谢谢

最佳答案

std::find_if 返回找到的元素的迭代器(如果没有元素与谓词匹配,则返回最后一个):

std::set<std::string>::iterator it = 
std::find_if(myset.begin(), myset.end(), findme());
if (it != myset.end())
{
// etc.

关于c++ - 在集合中使用 find_if,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6040122/

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