私のプログラムでセットのベクトルを作成しましたが、それぞれのセットを通過する必要があります。セットに特定の要素がある場合は、新しいセットをベクターに追加する必要があります。しかし、これは私の配列のカウンタが後で(ループ内で)挿入した要素に到達するとすぐに私にセグメンテーションフォールトを与えます。次のコードでは、list.push_back(cS)をオンにするとセグメント化エラーが発生します。セットのC++ベクタがpush_backを実行した後にセグメンテーションフォールトを返します
int main(void) {
set<int> cS;
vector<set<int> > list;
cS.insert(1);
list.push_back(cS);
cS.insert(2);
list.push_back(cS);
for (int ctr = 0; ctr < list.size(); ctr++)
{
for (set<int>::iterator itr = list[ctr].begin(); itr != list[ctr].end(); itr++)
{
if (*itr == 1 || *itr == 2)
{
cS.clear();
cS.insert(3);
//list.push_back(cS);
}
}
}
for (int ctr = 0; ctr < list.size(); ctr++)
{
for (set<int>::iterator itr = list[ctr].begin(); itr != list[ctr].end(); itr++)
{
cout << *itr << endl;
}
}
return 0;
}
なぜこのエラー(gcc)が発生するのか説明できる人に感謝します。
私の投稿をありがとうございました。
ではなく、ベクトル? –
習慣から外れていると思います。私が知る限り、ベクトルの場合、イテレータまたはインデックスを使用することは同等です。 – Arani