쌍 제거를 위한 Erase-Remove_if 관용구
std::Vector에서 쌍을 제거하기 위해 erase-remove_if 관용구를 사용하려고 할 때< std::pair
stopPoints.erase(std::remove_if(stopPoints.begin(), stopPoints.end(), [&](const stopPointPair stopPoint)-> bool { return stopPoint.first == 4; }));
문제의 근본 원인은 불완전한 삭제 프로세스에 있습니다. std::erase_if는 일치하는 요소만 벡터의 끝으로 이동합니다. 제거되지는 않습니다. 제거를 완료하려면 std::remove_if에서 반환된 반복자를 삭제 시작점으로 사용하는 것이 올바른 접근 방식입니다.
stopPoints.erase(std::remove_if(stopPoints.begin(), stopPoints.end(), [](const stopPointPair stopPoint)-> bool { return stopPoint.first == 4; }), stopPoints.end());
Erase-Remove_if 메커니즘 이해:
자세한 내용은 [Erase-Remove Idiom](https://en.wikipedia.org/)에서 Wikipedia 문서를 참조하세요. wiki/Erase-remove_idiom).
위 내용은 `std::Vector`에서 요소를 제거할 때 erasure-remove_if가 중복된 쌍을 남기는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!