그래서 이상한 상황, 구조체 목록을 만들고 다음 목록 구성원 중 하나를 새 값으로 업데이트하고 목록으로 다시 이동하려고합니다.int를 증가시킬 때 벡터 첨자가 범위를 벗어 났습니까?
필자는 iterator에서 struct의 값을 복사 할 수있는 것처럼 보이지만 int의 ++를 사용하여 구조체 멤버의 값을 업데이트하려고하면 모든 것을 벡터 클래스에서 예외가 발생합니다.
여기에서 무슨 일이 일어나는지에 대한 설명이 도움이 될 것입니다.
struct Blob
{
int x;
int y;
};
list<Blob> blob;
// Add a Blob to blob using .push_back(); here
for(list<Blob>::iterator iterator=blob.begin(); iterator!=blob.end(); ++iterator)
{
Blob temp;
temp.x = ((Blob)*iterator).x;
temp.y = ((Blob)*iterator).y;
if (temp.x < 10 - 1)
temp.x++; /* Exception: vector: line 932 - "Vector subscript out of range" */
((Rain)*iterator) = temp;
}
을 자신 만의 것이고 이것에 관한 어떤 벡터도 포함되어 있지 않습니다. – PlasmaHH
'((Rain) * iterator) = temp;라고하는 행은 무엇입니까? '비 '란 무엇이며 왜 캐스팅하고 있습니까? – interjay
왜'temp.x = iterator-> x'라고하지 않으시겠습니까? (캐스팅은 필요하지 않지만 문제는 아닙니다.) – Benj