-2

これを行うと、なぜ「セグメンテーション違反 (コアダンプ)」が発生するのですか?

std::vector<std::pair<int,int> > hm;
hm[0] = pair<int,int> (1,1);
4

4 に答える 4

6

ベクトルにはインデックスがゼロの要素は含まれていません。空です。新しいアイテムを追加する必要があります:

hm.push_back(pair<int,int>(1,1));
于 2013-07-04T20:19:01.657 に答える
2

このベクトルの初期サイズは 0 でoperator[]、境界はチェックされません。メソッドを使用する必要がありますpush_back(これにより、ベクトルのサイズが自動的に 1 増加します。サイズとは、要素の数を意味します)。

std::vector<std::pair<int, int>> hm(5);

またはresizeメソッドを使用します。

于 2013-07-04T20:19:43.897 に答える
0

[]本当にPython や Ruby と同じように動作させたい場合は、前hm[i] = jif (hm.size() < i+1) { hm.resize(i+1); }.

于 2014-02-25T20:36:06.453 に答える