3

2つのマップがあるとしましょう:

map<int,vector<int>> id2courses;
map<int,vector <int>> id2allowed_courses;

そして、各キー(ID)について、コースのリストにそのIDで許可されているコースのみが含まれているかどうかを確認したいと思います。これは for ループで簡単に実行できますが、std::map が順序付けられているという事実を利用したいと思います。つまり、両方のマップを進めたい (小さいキーでイテレータをインクリメントする) と、等しいキーを押したときに比較をしたいと思います。自明ではないwhileループでそれを実行できることは知っていますが、それを行うための組み込みのSTL方法があるのだろうか

4

2 に答える 2

1

set_intersection()を使用することもできますが、この実装は読みやすいですが、パフォーマンスは良くありません。サイクルを使用して、2 つのマップに対して 2 つの反復子をインクリメントします。より速い解決策はないと思います。組み込みのものがあったとしても、この素朴なソリューションと同じくらい最高のパフォーマンスを発揮します。

于 2013-02-14T09:16:45.073 に答える