我可以从所需的键迭代映射吗
Can I iterate a map from a desired key?
我有地图。我需要迭代它,不是从一开始,而是从所需的键开始。我试过了;
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_messmergingsrcmain.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'
请帮我纠正这个问题。
您可以使用map::find获取特定键的迭代器。
如果candidate_s应该是一个索引,为什么不使用预处理的向量呢?那你的查询时间会更快。但是,如果整数键是稀疏的/具有广泛的值范围,则基于向量的解决方案可能不适用。
假设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
}
相关文章:
- 迭代和比较映射<字符串、矢量<string>> c++ 中的值
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 映射迭代器与运算符不匹配
- 为什么映射插入和 map.find() 的单次迭代比插入和 map.find() 的两次单独迭代慢得多
- 使用迭代器替换映射中的常量项的方法
- 迭代嵌套映射与范围为循环:没有名为"first"的成员
- 如何将元素插入和迭代到这种映射.C++
- 映射中循环的迭代器
- 在迭代期间并发修改映射
- 如何迭代映射 inc++ 的向量
- 在包含类对象的C++中迭代映射
- 迭代映射以获取输入时出错
- 如何在const方法中迭代映射
- C++中不同大小向量的迭代映射
- 是否可以按值顺序迭代映射
- 使用boost迭代映射的gzip文件
- 如何迭代映射的c++映射
- 我可以从所需的键迭代映射吗
- 迭代映射并调用删除其他元素的函数就是映射
- 在c++中迭代映射时发出SIGSEGV信号