C의 map에서는 반복하는 동안 요소를 지우는 동작을 고려하는 것이 중요합니다. 이 작업을 올바르게 처리하지 않으면 예상치 못한 결과가 발생할 수 있습니다.
C 11에서는 erame() 메서드가 개선되어 이제 일관됩니다. 모든 컨테이너 유형에 걸쳐 요소가 지워지면 eras() 메서드는 다음 반복자를 반환합니다. 이를 통해 문제 발생 없이 맵을 계속 반복할 수 있습니다.
다음 코드는 C 11에서 반복하는 동안 맵에서 요소를 지우는 올바른 방법을 보여줍니다.
auto pm_it = port_map.begin(); while (pm_it != port_map.end()) { if (pm_it->second == delete_this_id) { pm_it = port_map.erase(pm_it); } else { ++pm_it; } }
C 03에서는 지도에서 요소를 삭제하는 동안 반복하면 반복자가 무효화될 수 있습니다. 이 문제를 방지하려면 eras() 작업 외부에서 증가하는 루프 변수를 사용하여 맵을 반복해야 합니다.
다음 코드는 C 03에서 반복하는 동안 맵에서 요소를 지우는 올바른 방법을 보여줍니다. :
map::iterator pm_it = port_map.begin(); while (pm_it != port_map.end()) { if (pm_it->second == delete_this_id) { port_map.erase(pm_it++); // Use iterator. // Note the post increment. // Increments the iterator but returns the // original value for use by erase } else { ++pm_it; // Can use pre-increment in this case // To make sure you have the efficient version } } 위 내용은 C에서 반복하는 동안 지도 요소를 지우면 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!