0

整数キーのみを使用して、C++ のハッシュ マップに整数データを挿入したいと考えています。私が持っている生データには、多くのキーが繰り返されます。キーが存在しない場合は、マップに値を挿入したいと考えています。ただし、キーが存在する場合は、古いデータと追加したい新しいデータを追加する必要があります ( c= key1 の古い値 + key1 の新しい値; c は key1 に挿入する必要があります)。現在、上書き中です。

Mapにキーが存在するかどうかを調べるには、これを使用することがわかりました

if ( map.count("key")>0) { // キーを取得しました }.

しかし、すべての挿入の前にこのチェックを行う必要がある場合、挿入の複雑さが n ^ 2 に増えるだけです。より良い方法はありますか?

4

2 に答える 2

0

なぜC++11 からunordered_maporを使用しないのか、それとも対応するものを使用しないのですか??unordered_multimapboost

また、これを次のように行うこともできます。

auto i = map.find( "key" );
if( i == map.end() ) {insert into map}
i->second = new value;

値がマップに既に存在する場合にこの手法を使用すると、チェックはありません。また、map(または場合によってはunordered_mapmap["key"]アイテムが存在しない場合はアイテムを作成し、デフォルトで初期化します!!

于 2012-10-14T09:45:12.280 に答える