Ich habe in meinem Programm einen Vektor von Sätzen erstellt, und ich muss jeden dieser Sätze durchgehen. Falls ein bestimmtes Element in der Menge gefunden wird, muss ich eine neue Menge zum Vektor hinzufügen. Dies führt jedoch zu einem Segmentierungsfehler, sobald der Zähler meines Arrays die Elemente erreicht, die ich später (innerhalb der Schleife) eingefügt habe. Im folgenden Code erhalte ich einen Segmentierungsfehler, wenn ich list.push_back(cS) einschalte.
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;
}
Ich wäre dankbar, wenn jemand erklären könnte, warum dies einen Fehler (in gcc) gibt.
Danke, dass Sie meinen Beitrag gelesen haben.