내 프로그램에서 벡터 집합을 만들었으며 각 집합을 통과해야합니다. 세트에 특정 요소가있는 경우 벡터에 새 세트를 추가해야합니다. 그러나 이것은 배열의 카운터가 나중에 (루프 내에서) 삽입 한 요소에 도달하자마자 세그먼트 오류를 발생시킵니다. 다음 코드에서 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