0
私は_cars多くのstd :: mapを返す最もエレガントな方法は何ですか?<,> :: iterator?
で車のオブジェクトのサブセットを操作する機能/クラスを記述する必要が車std::map<CarKey, Car> _cars;
の多くが含まれていた容器を持っている車の艦隊のプログラムに取り組んでいます
単純に私はちょうどフィルタ機能
for(auto& p : _cars){
//please note: I cannot get things done with one iteration, I have to iterate many times to get things done
if (isOfInterest(p.second)){
// do some thing
}
}
と_carsを反復処理することができ、そのような解決策の欠点は、それは私が唯一の車の10%に興味があるですが、私はを反復たくさんの時間を無駄にする必要がありますこれは良いアプローチであれば は、私は私はわからない
std::vector<std::map<CarKey, Car> :: iterator > getAllIntereted(_cars)
が、私は単純にベクトル
を反復処理することができます興味を持ってすべてのイテレータを返すようにエレガントな方法を見つけようとしています。たぶん役立つデザインパターンがありますか?
誰でも洞察力を与えることはできますか?コードの多くを見ずに
おかげ
これはおそらく、興味深い車がある範囲内にあり、それらを新しい地図として取得する場合に役立ちます。https://stackoverflow.com/questions/39080489/copy-subset-of-a-stdmap –
プロファイラによって確認されたパフォーマンスの問題? – dasblinkenlight
あなたのコードは完全にうまく見えます。パフォーマンスを改善したい場合は、 'isOfInterest()'を効率的にするようにしてください。いくつかの複雑な検索が含まれている場合、キャッシングによって。 – Pavel