범위 기반 for 루프 내에서 벡터 요소 관리
C 11에서 범위 기반 for 루프는 컨테이너의 요소. 그러나 벡터에서 요소 제거와 같은 특정 작업은 이러한 루프 내에서 문제가 됩니다.
C 11 범위 기반 for 루프 중에 벡터에서 요소를 제거할 수 있습니까?
안타깝게도 그렇지 않습니다. 범위 기반 for 루프는 컨테이너의 각 요소를 일회성 반복하도록 설계되었습니다. 요소 제거를 포함하여 컨테이너 자체를 수정하는 데는 적합하지 않습니다.
요소 제거의 대안:
루프 내의 벡터에서 요소를 제거하려면 다음을 사용해야 합니다. 전통적인 for 루프 또는 그 변형. 이는 컨테이너의 수정 및 비선형 순회를 허용합니다.
예:
auto i = std::begin(inv); while (i != std::end(inv)) { // Do some stuff if (blah) i = inv.erase(i); else ++i; }
std::begin 및 std::end 함수를 사용하여, 루프는 반복자를 사용하여 벡터를 반복합니다. 요소가 제거 대상으로 표시되면 삭제 함수가 호출되어 제거된 요소를 가리키는 반복자가 무효화됩니다. 그런 다음 반복기를 전진시켜 루프를 계속합니다.
결론적으로, 범위 기반 for 루프는 읽기 전용 반복에 사용하기 쉬운 반면, 벡터에서 요소를 제거하는 것과 같은 작업의 경우 기존 for 루프를 사용해야 합니다. 컨테이너 수정에 대한 통제력을 유지하세요.
위 내용은 C 11 범위 기반 For 루프 중에 벡터에서 요소를 제거할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!