map<string, vector<int>>
がmy_map
とし、42
を"foo"
に関連付けたいとします。ジャワから来る私が驚いたことに、この可変値のマップに追加
if (my_map.find("foo") != my_map.end()) {
my_map["foo"].push_back(42);
} else {
vector<int> my_vector;
my_map["foo"] = my_vector;
my_vector.push_back(42);
}
ような何かを持っていることを期待する私は、私はちょうどこの作業を行う方法
my_map["foo"].push_back(42);
を行うことができますことを発見? my_map["foo"]
は、マップの値の型にパラメータのないコンストラクタがない場合はどうなりますか?空のコンストラクタ以外の方法ですべての値を初期化したいとします。 Javaでは、私はできるでしょう
map.computeIfAbsent("foo", **some supplier of Vectors**).add(42);
C++には同等のものがありますか?
'ベクター my_vector; my_map ["foo"] = my_vector; my_vector.push_back(42); 'あなたの' else'では、あなたは何を正確にしようとしていますか? –
コンテナにはコピーが格納されます。 C++はJavaではありません。すべてがリファレンスではありません。 – user463035818
"foo"が見つからない場合に要素を挿入しようとすると、新しいマップセルが作成されます。作成中に、ベクトルのデフォルトのコンストラクタが呼び出され、すでに空のベクトルを作成しています – Stefano