C 11 범위 기반 루프의 벡터에서 요소 제거
C 11 범위 기반 for 루프를 사용하여 벡터를 반복할 때, 루프 내에서 해당 벡터에서 요소를 제거하는 것이 의미하는 바를 고려하는 것이 중요합니다. 예상과는 달리 범위 기반 구문을 사용하여 요소를 직접 제거하는 것은 불가능합니다.
범위 기반 루프는 반복을 단순화하고 컨테이너 요소에 하나씩 액세스하는 보다 간결한 방법을 제공하기 위해 도입되었습니다. 컨테이너 복사본을 반복하여 컨테이너를 순회하는 편리하고 안전한 방법을 제공하는 동시에 루프 내 변경으로 인해 발생할 수 있는 오류를 방지합니다.
그러나 이 설계 접근 방식은 범위 기반 루프가 반복 중에 컨테이너를 수정해야 하는 경우에는 적합하지 않습니다. 범위 기반 루프 내에 있는 동안 벡터에서 요소를 제거하려고 하면 루프가 무효화됩니다. 이는 루프가 반복자를 사용하여 컨테이너를 순회하며 요소를 제거하면 반복자가 무효화되고 정의되지 않은 동작이 발생하기 때문입니다.
반복하는 동안 벡터에서 요소를 안전하게 제거하려면 기존 루프 구성을 사용하는 것이 좋습니다. , 예를 들어 for (auto& 요소: inv)에서는 벡터에 직접 액세스할 수 있고 필요에 따라 수정할 수 있습니다. 또는 답변에 제공된 예와 유사하게 반복자와 함께 while 루프를 사용할 수 있습니다. 이를 통해 요소를 제거하고 반복자를 동시에 발전시킬 수 있습니다.
이러한 방식을 채택하면 벡터를 효과적으로 관리하고 수행할 수 있습니다. 루프가 유효한 상태로 유지되고 코드가 예상대로 계속 작동하는지 확인하면서 요소 제거 작업을 수행합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3