Я создал вектор наборов в моей программе, и мне нужно пройти через каждый из наборов. Если в наборе найден определенный элемент, мне нужно добавить новый набор в вектор. Однако это дает мне ошибку сегментации, как только счетчик моего массива достигает элементов, которые я вставил позже (в цикле). В следующем коде включение 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).
Спасибо, что прочитали мой пост.