现在我有一张地图,即command_map。我有一个名为address_list的列表。在command_map中,每对都是地址和命令。在address_list中,每个项目都是地址。
所以我想要做的是搜索存储在command_map中address_list中的地址。当找到它时,打印出该命令及其地址。否则,只需打印出该命令即可。
我使用嵌套for循环来执行此操作。但它不起作用。
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;
}
}
}
答案 0 :(得分:1)
请勿自行搜索地图,请使用find方法。它是一棵红黑树,所以按照你正在做的方式搜索它将是昂贵的。使用std::map::find。
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;
}
}