Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c+中遍历一个列表并搜索另一个列表中的每个元素+;_C++_List_Search_Iterator_Elements - Fatal编程技术网

C++ 在c+中遍历一个列表并搜索另一个列表中的每个元素+;

C++ 在c+中遍历一个列表并搜索另一个列表中的每个元素+;,c++,list,search,iterator,elements,C++,List,Search,Iterator,Elements,我创建了一个名为“工作列表”的4个元素的列表。我还有一个名为“choicelist”的列表,其中有大约40个元素。我想检查“工作列表”中是否有任何元素出现在“choicelist”中 我知道我会使用“std::find”from进行搜索,但我如何按照“choicelist”中“worklist”的顺序检查每个元素呢 请记住,一旦在“choicelist”中找到“worklist”中的元素,我希望搜索过程结束(最好是通知“worklist”中的哪个元素是第一个匹配的元素)。您必须迭代第一个列表的元

我创建了一个名为“工作列表”的4个元素的列表。我还有一个名为“choicelist”的列表,其中有大约40个元素。我想检查“工作列表”中是否有任何元素出现在“choicelist”中

我知道我会使用“std::find”from进行搜索,但我如何按照“choicelist”中“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";
}