2012-03-18 13 views
1

私はmap<string,vector<string> >という文字列を文字列のリストにマッピングするdictを持っています。私は空の値を特定のキーの値に割り当てたい。後で値をプッシュする空のベクトルを作成する

else dict[words[i]]=<EMPTY VECTOR WHERE I CAN PUSH DATA LATER INTO>; 

wordsは文字列のベクトルです。これはどうすればいいですか?もちろん、標準のテンプレートライブラリを使用しています。

+0

'dict'に' words [i] 'と同等のキーを持つ要素が既に含まれているとしたら、どんなふうにしたいですか? (あるいはコードの残りの部分はそれを不可能にしますか?) – Mankarse

+0

'dict'に' words [i] 'と呼ばれるキーが含まれていれば、そのキーに関連付けられている何かをプッシュします。その理由は、その声明の中の「else」です。私は、私が持っていた問題を実際には正確に言及していないコードを提供することが、不必要に複雑になると思っていました。 – thekindlyone

答えて

3

else dict[words[i]];は、単独で十分でなければなりません。 dictにまだwords[i]相当のキーを持つ要素が含まれていない場合は、words[i]のコピーをキーとしてデフォルトの構成済み(空の)ベクトルを値として新しい要素がdictに作成されます。

に相当する要素がすでにdictに含まれている場合、dictは変更されません。

+1

これで十分ですが、意図がコードの読者にとって必ずしも明確ではありません。 –

+0

'dict'は' map'です。これは 'insert'関数を提供します。 C++ 11のバージョンはかなり簡潔ですが、 'dict.insert(map > :: value_type(words [i]、vector ());'は合理的に自己文書化しています: 'dict.insert ({words [i]、{}}); ':-) – boycy

2
dict[words[i]] = std::vector<std::string>(); 
関連する問題