C 03에서, 맵에서 요소를 지우면 해당 요소를 가리키는 반복자가 무효화됩니다. 그러나 C 11 이상에서는 삭제 메서드가 다음 반복자를 반환하므로 요소 제거 후 안전한 반복이 가능합니다.
C의 경우 03, 맵에서 요소를 제거한 후 안전한 반복을 보장하려면 map::erase()에서 반환된 반복자를 사용하도록 코드를 업데이트하고 다음을 수행하세요. erasure()를 호출한 후 반복자에 대한 사후 증가.
map<string, SerialdMsg::SerialFunction_t>::iterator pm_it = port_map.begin();<br>while(pm_it != port_map.end())<br>{</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">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 11 이상에서는 erasure()가 다음 반복자를 반환합니다. 다음 구문을 사용하여 요소를 동시에 반복하고 제거하는 것이 안전합니다.
<br>auto pm_it = port_map.begin();<br>while(pm_it != port_map.end())<br>{</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">if (pm_it->second == delete_this_id) { pm_it = port_map.erase(pm_it); } else { ++pm_it; }
}
위 내용은 C에서 반복하는 동안 지도 요소를 지우면 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!