プログラムでセットのベクトルを作成しました。各セットを処理する必要があります。セット内に特定の要素が見つかった場合は、ベクターに新しいセットを追加する必要があります。ただし、これにより、後で (ループ内で) 挿入した要素に配列のカウンターが到達するとすぐに、セグメンテーション違反が発生します。次のコードでは、list.push_back(cS) をオンにすると、セグメンテーション違反が発生します。
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で)誰かが説明してくれたらありがたいです。
私の投稿をご覧いただきありがとうございます。