次のようなコードをよく見かけます。
if(myQMap.contains("my key")){
myValue = myQMap["my key"];
}
理論的には、QMap で 2 つのルックアップを実行します。
私の最初の反応は、次のように置き換える必要があるということです。これは、1 回のルックアップのみを実行し、2 倍速くなるはずです。
auto it = myQMap.find("my key");
if(it != myQMap.end()){
myValue = it.value();
}
QMap がこの最適化を自動的に行ってくれるのでしょうか? 言い換えれば、QMap が見つかった最後の要素の位置を保存しQMap::contains()
、次の検索を実行する前に最初にチェックするかどうか疑問に思っていますか?