편집을 삭제 :이 질문은 수 std :: 목록 특별히 의미 - 스택 오버플로 다른 유사한 질문 : 나는 C++을 사용하고 데 문제가 표준에서 요소를 삭제하는 데 문제가C++ 목록 반복하고
을 벡터 수 std 참조 :: iterating 동안 목록. 나는 사용자 정의 클래스 (이 질문을 위해 '개체')의 목록을 가지고 내 코드는 다음과 같습니다 : '전화가 성병에 대한 일치 기능 : I 오류를 받고 있어요
for(auto i : Objects)
if(i.EraseFlag == true)
{
i = Objects.erase(i);
}
: : list :: erase (&) '
나는이 방법이리스트를 반복하고, 요소를 지우고 지우개를 고려하지만 반복자를 반환하는 올바른 방법이라고 생각한다. 나는 뭔가 잘못하고있다. 이전에는 벡터를 사용할 때 for 루프에서 정수가되는 'Objects.erase (Objects.begin() + i)'를 사용했지만 목록의 액세스 요구 사항이 주어지면 작동하지 않습니다.
감사합니다.
감사
소거()에 대한 상기 범위를 기반으로 'for' 루프 중 서열을 변경해서는 안 –
그 파라미터 반복자 걸린다. – PaulMcKenzie
*이 방법은 목록을 반복하고, 요소를 지우고 지우는 것을 고려한 반복자를 반환하는 올바른 방법이라고 생각합니다 (C++ 11 이상) - 지우는 것을 고려하여 반복자를 반환하는 이유는 무엇입니까? '지우기/제거 '관용구, 루프가 필요없는 곳? – PaulMcKenzie