std::vector<MyString>
のデータは一意ではありません。実際には、ほとんどの文字列が繰り返されます。そして私はユニークなものとそれらの繰り返し番号を見つけなければなりません。新しいstd :: mapエントリはキー挿入だけでどのように初期化されますか?
私はマップを使用する:
std::map<MyString,unsigned short> stringsMap;
.......
if (stringsMap.find(currentString) == stringsMap.end())
{
stringsMap[ currentString ] = 0;
}
stringsMap[ currentString ]++;
........
は、あなたはそれが少ないライン上で行うことができる方法のアイデアを持っていますか?
これは1行で行うことができます:stringsMap[ currentString ]++;
デフォルトでは、短くは不確定値です。
初期値は不定ではありませんでした。それは0です。['operator []'](http://en.cppreference.com/w/cpp/container/map/operator_at)value-missingキーの値を初期化します。 –
あなたはそれについて何か確認していただけますか? –
'if'文全体を取り除くだけです。 '[currentString]'がまだ存在していなければ、追加され、その値は0に初期化されてから、 'operator ++'がそれに適用されます。 –