如何在c++映射中迭代一组特定的键

How to iterate over a specific set of keys in c++ maps?

本文关键字:一组 c++ 映射 迭代      更新时间:2023-10-16

我正在迭代一个c++映射。假设我想获得地图中除了前2个键之外的所有键。键在map中排序。因此,我想到使用这样的东西:

map<int, int> table;
for( auto i = table.begin()+2; i != table.end(); i++ )
  cout<<i->first<<"t"<<i->second<<endl;

虽然这适用于向量,但由于没有为映射实现'+'操作符,它会抛出映射错误。实现该结果的一种方法是:

auto i = table.begin();
int count = 0;
while( count < 2 && i != table.end() ){
  count++;
  i++;
}
for( ; i!=table.end(); i++ )
  cout<<i->first<<"t"<<i->second<<endl;

有没有其他有效的方法来实现这个?

这不是更有效,但可能更容易阅读

for (auto i = std::next(table.begin(), 2); i != table.end(); i++)