std::multimap に一意のキーをまたぐ反復子はありますか? 質問する

std::multimap に一意のキーをまたぐ反復子はありますか? 質問する

マルチマップ内の一意のキーを反復処理するマルチマップ反復子を作成するための簡単または標準的な方法はありますか?

つまり、次のようなセットの場合:{1, "a"}, {1, "lemon"}, {2, "peacock"}, {3, "angel"}から始まり、{1, "a"}増分すると を指し{2, "peacock"}、再度増分すると を指す反復子ですか{3, "angel"}?

ベストアンサー1

の代わりに を使ってupper_bound反復子の位置を増分することができます++:

#include <map>
#include <string>
#include <iostream>

using namespace std;

int main()
{
  multimap<int,string> mm;
  mm.insert(make_pair(1, "a"));
  mm.insert(make_pair(1, "lemon"));
  mm.insert(make_pair(2, "peacock"));
  mm.insert(make_pair(3, "angel"));

  for( auto it = mm.begin(), end = mm.end();
       it != end;
       it = mm.upper_bound(it->first)
  )
    cout << it->first << ' ' << it->second << endl;
  return 0;
}

これ結果的に:

1 a
2 peacock
3 angel

おすすめ記事