2012-02-27 15 views
2

私はキーと値のペアのマップを持っています。先験的に私はそれがサイズ、すなわちどれくらいの鍵を持っているのかわからない。今、一見の中で、キーが現れ、対応するキーの値を増やす必要があります。マップの値を増やす

例:

std::map<int, unsigned int> myMap; 
std::vector<int> vectorOfValues; // 123,456,123,789,123,456 
for(unsigned int i=0; i<vectorOfValues.size(); ++i) { 
    myMap[vectorOfValues.at(i)] += 1; 
} 

だから今myMap<123,3>, <456,2>, <789,1>が含まれている必要があります。

質問:

は、これは正しいですか?私は値を初期化せずにマップを使用することは良い考えではないと思います。しかし、私はそれを増やしたい時はいつもエントリーを検索することを避けたい。

乾杯!

+0

他の人に言われているように、あまり冗長にすることはできません。 myMap [vectorOfValues [i]] ++;十分なものです。 – Jagannath

答えて

3

IMO、それは大丈夫です、unsigned intはデフォルト構築(すなわち、ゼロが初期化)になり、1つのコメントはat()コールは不要であるということです - (すでにsize()によって制約される)operator[]を使用しています。

+0

1羽の鳥2頭..ありがとう! – ezdazuzena

1

これは正しいです。以前存在しない値はゼロに初期化されます。

関連する問題