これを行うと、なぜ「セグメンテーション違反 (コアダンプ)」が発生するのですか?
std::vector<std::pair<int,int> > hm;
hm[0] = pair<int,int> (1,1);
これを行うと、なぜ「セグメンテーション違反 (コアダンプ)」が発生するのですか?
std::vector<std::pair<int,int> > hm;
hm[0] = pair<int,int> (1,1);
ベクトルにはインデックスがゼロの要素は含まれていません。空です。新しいアイテムを追加する必要があります:
hm.push_back(pair<int,int>(1,1));
このベクトルの初期サイズは 0 でoperator[]
、境界はチェックされません。メソッドを使用する必要がありますpush_back
(これにより、ベクトルのサイズが自動的に 1 増加します。サイズとは、要素の数を意味します)。
std::vector<std::pair<int, int>> hm(5);
またはresize
メソッドを使用します。
[]
本当にPython や Ruby と同じように動作させたい場合は、前hm[i] = j
にif (hm.size() < i+1) { hm.resize(i+1); }
.