C++ 在c+中遍历一个列表并搜索另一个列表中的每个元素+;
我创建了一个名为“工作列表”的4个元素的列表。我还有一个名为“choicelist”的列表,其中有大约40个元素。我想检查“工作列表”中是否有任何元素出现在“choicelist”中 我知道我会使用“std::find”from进行搜索,但我如何按照“choicelist”中“worklist”的顺序检查每个元素呢C++ 在c+中遍历一个列表并搜索另一个列表中的每个元素+;,c++,list,search,iterator,elements,C++,List,Search,Iterator,Elements,我创建了一个名为“工作列表”的4个元素的列表。我还有一个名为“choicelist”的列表,其中有大约40个元素。我想检查“工作列表”中是否有任何元素出现在“choicelist”中 我知道我会使用“std::find”from进行搜索,但我如何按照“choicelist”中“worklist”的顺序检查每个元素呢 请记住,一旦在“choicelist”中找到“worklist”中的元素,我希望搜索过程结束(最好是通知“worklist”中的哪个元素是第一个匹配的元素)。您必须迭代第一个列表的元
请记住,一旦在“choicelist”中找到“worklist”中的元素,我希望搜索过程结束(最好是通知“worklist”中的哪个元素是第一个匹配的元素)。您必须迭代第一个列表的元素,并使用find函数检查它是否在第二个列表中。如果它找到了搜索元素,则打印它并中断循环
std::list<int> worklist;
std::list<int> choicelist;
//This loop only works in C++11 and above,
//in case of C++98, you need to use iterators to iterate over list
for( auto &x : worklist)
{
//auto is also a feature of C++11 and above
auto y = std::find (std::begin(choicelist),
std::end(choicelist), x);
if( y != choicelist.end())
{
std::cout<< *y<<"\n";
break;
}
}
std::列表工作列表;
std::列表选择者;
//此循环仅适用于C++11及更高版本,
//对于C++98,您需要使用迭代器对列表进行迭代
用于(自动和x:工作列表)
{
//自动也是C++11及更高版本的一个特性
自动y=std::find(std::begin(choicelist),
标准::结束(唱诗班名单),x);
如果(y!=choicelist.end())
{
std::coutt这是一种基本的处理方法,但正如您所说,对于工作列表
中的每个元素,在choicelist
中为该元素执行std::find
。如果您得到了一些东西(而不是最终迭代器),然后它就在那里了。否则,它就不在了。那么,你试过什么了?值得注意的是,这只在C++11及以上版本中有效:)@electral我把它作为一个注释包括在内,所以说我在工作列表中有值“2,3,4,5”,而在唱诗班列表中有值“0,1,2,3,4,5,6,7,8,9”,我希望cout只能是“2”。这段代码可以实现吗?@Matthew如果你不需要循环,你可以先用std::find__代替std::find。我会更新代码
auto y= std::find_first_of(std:begin(choicelist), std::end(choicelist),
std::begin(worklist), std::end(worklist));
if( y != choicelist.end())
{
std::cout<< *y<<"\n";
}