C++ std::是否在C+中列出+;有find()方法吗?

C++ std::是否在C+中列出+;有find()方法吗?,c++,C++,因此,我创建了一个数组列表: list<string> myArrayOfLists[size]; 然后我试着找到这样一个词: myArrayOfLists[index].push_back(word); myArrayofLists[index].find(myArrayOfLists[size].begin(), myArrayOfLists[size].begin(), word); 最后一个命令返回的错误是: no member named 'find' in 'std

因此,我创建了一个数组列表:

list<string> myArrayOfLists[size];
然后我试着找到这样一个词:

myArrayOfLists[index].push_back(word);
myArrayofLists[index].find(myArrayOfLists[size].begin(), myArrayOfLists[size].begin(), word);
最后一个命令返回的错误是:

no member named 'find' in 'std::list<std::basic_string<char>, std::allocator<std::basic_string<char>>>'
在'std::list'中没有名为'find'的成员

我想,如果我导入了
,为什么仍然会出现错误?是否有其他方法可以搜索列表并找到我要查找的内容?

只有那些能够以某种方式高效查找元素的标准库容器才具有
find
成员函数。对于所有其他容器,请使用
std::find
free函数:

auto it = std::find(x.begin(), x.end(), "needle");

std::cout << (it == x.end() ? "not found" : "found");
auto-it=std::find(x.begin(),x.end(),“针”);
std::cout哇!你忘了。
std::list
中没有成员函数
find


相反,请使用标题

“因此我创建了一个数组列表”中的泛型。不,您没有。下次使用该标记或首字母缩写词之前,请阅读标记wiki。谢谢。我发现一个明确的“非有效”函数是“免费”的,这是一个令人愉快的讽刺:)我希望随着范围的引入,
std::find
将能够委托给成员函数
find
,以防后者存在。由于该函数返回迭代器,而不是实际值,因此有没有其他方法通过链表进行搜索?在文档中找不到任何内容。@IsabelPhonse
*它是值。标准库中的算法就是这样工作的,它们通过迭代器粘在数据结构上。@Isabelphonse:嗯,既然您搜索了值,那么您找到的值就是您搜索的值。。。(但您当然可以取消对迭代器的引用)。是的,我尝试了
string x=find(myArrayOfLists[size].begin(),myArrayOfLists[size].begin(),word)但我收到了相同的错误消息。@Isabelphonse仔细阅读
std::find
的文档。”。它返回一个迭代器,而不是一个值。因此,您必须先测试它,然后再引用迭代器。因为在C++ 11中不能使用任何东西,所以有一种方法可以判断元素是否存在于列表中而不使用<代码> Auto <代码> >类型?@ ISabelalPosis<代码> STD::列表:迭代器I= STD::Debug(…)<代码>。文档告诉您返回类型。