C++ 从地图的第二个元素迭代
C++ Iterate from the second element of a map
我有一个std::multimap
,我正在使用前向迭代器对其进行迭代。
std::multimap<int,char>::iterator it;
for(it=map.begin();it!=map.end();++it) {
// do something
}
现在,我需要以不同的方式处理第一个元素,并从映射的第二个元素开始迭代。我该怎么做?
std::multimap<int,char>::iterator it;
for(it = std::next(map.begin()); it != map.end(); ++it) {
// do something
}
这只是 C++11。您需要包含<iterator>
.
另一个选项很明显,但不太漂亮:
it = map.begin();
++it;
for(; it != map.end(); ++it) {
// do something
}
也看看std::advance
。
看起来更短
it = ++map.begin();
std::multimap<int,char>::iterator it = map.begin();
//treat it here
++it
for(;it!=map.end();++it) {
}
for(bool First=true, it=map.begin();it!=map.end();++it) {
if (First) { do something; First=false; }
else { do something else; }
}
或者,如果您愿意:
iterator it=map.begin();
if (it!=map.end()) { do something; ++it; }
for (; it!=map.end(); ++it) { do something }
将
for 初始值设定项中的it = map.begin()
更改为 it = map.begin(), ++it
。
相关文章:
- 擦除while循环中迭代的元素
- 对于set上的循环-获取next元素迭代器
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- 高级选择排序 - 在一次迭代中搜索两个元素
- 访问要输出的矢量迭代器元素
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- 位集元素迭代的抽象
- C++如何乘以包含 std::variant 元素的向量的迭代器?正在执行迭代器类型的转换?
- 调用 erase() 函数是否也会在擦除元素之前更改迭代器值?
- 为什么 min_element() 返回最小元素的索引,而不是迭代器?
- 如何将元素插入和迭代到这种映射.C++
- 如何通过查找迭代器结果分配给一组对的元素
- 在迭代期间添加到 std::unordered_set(或 unordered_map)中的元素是否会在迭代期间访问?
- 使用 Rcpp 加速替换迭代算法中的列表和向量元素是否合法?
- C++:在进行切片时对迭代器的约定,特别是对于访问最后一个元素并最终将其删除
- 如何在集合中迭代替代元素(或进行特定大小的飞跃)?
- 无法将 std::set 中的元素迭代器插入到 std::list
- 使用std :: remove_reference获取STL容器的元素迭代器
- C++ 从地图的第二个元素迭代
- 在未排序向量中查找第 k 个最小元素(迭代)