我有地图。我需要不是从头开始迭代它,而是从所需的键迭代它。 我试了一下;
int candidate_s;
map<int, vector<int> >::iterator map;
for(map = a_list.begin()+candidate_s; map! = a_list.end(); map++){
cout<<map->first<<"= ";
for(vector<int>::iterator vec=map->second.begin(); vec!=map->second.end(); vec++){
cout<<*vec<<" ";
}
cout<<endl;
}
我收到以下错误消息:
D:\c_mess\merging\src\main.cpp no match for 'operator+' in '(+a_list)->std::map<_Key, _Tp, _Compare, _Alloc>::begin [with _Key = int, _Tp = std::vector<int, std::allocator<int> >, _Compare = std::less<int>, _Alloc = std::allocator<std::pair<const int, std::vector<int, std::allocator<int> > > >]() + candidate_s'
请帮我纠正这个问题。
答案 0 :(得分:3)
您可以使用map::find获取特定键的迭代器。
如果candidate_s应该是一个索引,为什么不使用预定义的向量呢?那么你的查找时间会更快。但是,如果整数键稀疏/具有多种值,则基于矢量的解决方案可能不适用。
答案 1 :(得分:2)
假设candidate_s
属于std::map
键的类型:
std::map<int, vector<int> >::const_iterator startIt = a_list.find(candidate_s);
for(; startIt != a_list.end(); ++startIt) {
//Do stuff
}