0

今日、empty_map[key] がマップに null 要素を作成することに気付きました。私はそれを期待していませんでした。null を取得して要素を作成しないコンテナのようなマップはありますか? すべての [] を .find() に置き換える必要はないと思います

4

2 に答える 2

3

あなたはfind()で立ち往生しています。これはまさにそのようmapに設計された方法であり、その動作が唯一の違いである同様のコンテナーはありません。(またはBoBTFishが言ったように、使用できますat

もう少し詳しく説明すると、NULL 値を参照することはできません。つまり、要素または end() を指す反復子を使用するか、参照を返すか例外をスローするメソッドを使用できます。 find()そしてat()これらの2つのオプションです。

于 2012-04-24T09:00:08.943 に答える
1

気に入らない場合は、 に委譲するが別の実装をstd::map提供する独自のコンテナを作成できます。もちろん、参照を返すことの全体的なポイントは次のようになることに注意してください。constoperator[]operator[]

std::map<Key, Value> theMap;
theMap[someKey] = someValue;

働ける。それ以外の場合は、次のことを行う必要があります。

theMap.insert(std::make_pair(someKey, someValue)];

これは、ルックアップにfind/を使用するよりも悪いトレードオフのようです。at(または、見つかったアイテムにイテレータを返すようにすることもできますoperator[]が、それは を使用するのとまったく同じfindです。)

于 2012-04-24T09:22:41.107 に答える