検索関数からイテレータのグループを保持したい。イテレータのグループ (配列とセット) を保持するための「より良い方法」はありますか? メモリ効率の観点から、それぞれの長所と短所は何ですか?
ありがとう。
何を達成しようとしているのかを理解せずに、配列と設定のどちらが優れているかを議論しても意味がありません。
イテレータが指しているコンテナの種類と、そのコンテナが更新されることが期待されているかどうかを考慮する必要があります。
たとえば、イテレータをベクトルに格納している場合 (これらのイテレータをどこに配置しても問題ありません)、ベクトルを更新すると、以前に格納されたイテレータは無効になる可能性があります。イテレータの格納には十分注意してください。
速度のために結果をキャッシュしているようです。結果をキャッシュする必要がある場合は、順序付けされていないコンテナーの 1 つを使用することをお勧めします。検索結果には、キャッシュと同じキーを使用してください。イテレータは保存せず、クエリ キーと実際の結果だけを保存します。unordered_set のルックアップ時間は O(1) であり、キーをハッシュして結果を保存するため、あまりスペースを占有しません。
セットには一意のオブジェクトのみが含まれますhttp://en.cppreference.com/w/cpp/container/set