我想使用列表中的项目在地图中搜索

I want to search in the map using the item in the list

本文关键字:项目 地图 搜索 列表      更新时间:2023-10-16

现在我有一个映射,这是命令_ map。我有一个名为adversion_list的列表。在command_map中,每对是地址和命令。在adversion_list中,每个项目都是地址。

因此,我要做的就是搜索command_map中adversion_list中存储的地址。当找到它时,打印出该命令及其地址。否则,只需打印出该命令即可。

我正在使用嵌套进行循环来做到这一点。但这行不起作用。

for (list<string>::iterator it_address= address_list.begin(); it_address != address_list.end(); ++it_address)
{
    for (map<string,string>::iterator it=command_map.begin(); it!=command_map.end(); ++it)
    {
        if (*it_address == it->first)
        {
            cout<<"Addr_"<<it->first<<":"<<endl;
            cout<<"         "<<it->second<<endl;
        }
        else
        {
            cout<<"         "<<it->second<<endl;
        }
    }
}

不要自己搜索地图,请使用查找方法。这是一棵红黑的树,因此以您的操作方式搜索它会很昂贵。使用std :: map ::查找。

for (list<string>::iterator it_address= address_list.begin(); it_address != address_list.end(); ++it_address) {
    auto myCommand = command_map.find(*it_address);
    if (myCommand != command_map.end()) {
        cout<<"Addr_"<<myCommand->first<<":"<<endl;
        cout<<"         "<<myCommand->second<<endl;
    } else {
        cout<<"         "<< *it_address <<endl;
    }
}