STL 알고리즘을 사용하여 맵에서 요소를 효율적으로 제거
맵 내에서 요소를 선택적으로 제거하려면 Remove_if와 직접적으로 동등한 요소가 없습니다. 연관 컨테이너의 경우 문제가 발생합니다. 그러나 이 작업을 효율적으로 수행하기 위해 여러 가지 접근 방식을 사용할 수 있습니다.
반복 및 지우기
간단한 솔루션은 지도를 수동으로 탐색하고 지정된 조건을 충족하는 요소를 제거하는 것입니다. . 하지만 이 방법은 삭제 후 반복자가 무효화되므로 주의가 필요합니다. 이 문제를 해결하려면 삭제 후에만 반복자를 증가시키면 후속 요소를 가리키는 반복자가 유효한 상태로 유지됩니다.
auto iter = map.begin(); while (iter != map.end()) { if (predicate(*iter)) { iter = map.erase(iter); } else { ++iter; } }
반복자 범위로 지우기
정확하지는 않지만 Remove_if와 동일하면 map::erase를 사용하여 반복자 범위를 지정하여 요소 범위를 제거할 수 있습니다. 이 접근 방식은 많은 수의 요소를 제거해야 하는 경우 특히 효율적입니다.
auto begin = map.lower_bound(lower_bound); auto end = map.upper_bound(upper_bound); map.erase(begin, end);
이러한 방법 중 하나를 활용하면 특정 조건에 따라 지도에서 요소를 선택적으로 제거할 수 있으므로 효율적이고 용기를 정확하게 수정하세요.
위 내용은 조건에 따라 C 맵에서 요소를 효율적으로 제거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!