今朝アルゴリズムを書いていたところ、不思議な状況に遭遇しました。私は2つ持っていstd::map
ます。それぞれのキーのセットに対してセット交差を実行したいと思います(両方のマップに共通するキーを見つけるため)。将来的には、ここでもセット減算を実行したいと思うでしょう。幸い、STLにはこれら両方の操作の関数が含まれています。std::set
問題は、からキーを取得できないように見えることですstd::map
。これを行う方法はありますか?Javaの場合のように、これほど単純なものを探しています。
std::set<Foo> keys = myMap.getKeySet();
私の理解では、マップはキーだけでなくオブジェクトをstd::set_intersection()
公開しているため、マップへのイテレータでこの関数を直接使用することはできません。std::pair
また、地図は順序を保証するとは思いません。std::multimap
違いがあれば、この同じ操作をsのペアで実行することにも興味があります。
編集:私が使用することを余儀なくされたコンパイラ(MSVC ++ 6)の時代のために、ブーストで利用可能な気の利いたテンプレートトリックのほとんどは使用できないことを最初に言及するのを忘れました。