std::remove의 기능 이해
C에서 std::remove 알고리즘은 두 개의 순방향으로 표시되는 임의 시퀀스에서 작동합니다. 반복자. 그 목적은 시퀀스 내의 요소를 재정렬하여 일치하지 않는 요소를 앞으로 이동시키는 것입니다. std::erase와 달리 제거는 컨테이너에서 요소를 물리적으로 삭제하지 않습니다. 대신 재구성합니다.
예
다음 코드 조각을 고려하세요.
std::vector<int> a; a.push_back(1); a.push_back(2); std::remove(a.begin(), a.end(), 1); std::vector<int>::iterator iter = a.begin(); std::vector<int>::iterator endIter = a.end(); std::cout << "Using iter...\n"; for (; iter != endIter; ++iter) { std::cout << *iter << "\n"; } std::cout << "Using size...\n"; for (int i = 0; i < a.size(); ++i) { std::cout << a[i] << "\n"; }
출력은 다음과 같습니다.
Using iter... 2 2 Using size... 2 2
remove가 요소 2를 앞으로 효과적으로 이동했지만 초기화되지 않은 메모리가 제거되지 않았기 때문에 벡터의 크기는 2로 그대로 유지됩니다.
Erase-Remove Idiom
삭제-제거 관용구는 제거와 지우기를 결합하여 원치 않는 요소를 물리적으로 제거합니다. 코드:
a.erase(std::remove(a.begin(), a.end(), 1), a.end());
벡터에서 요소 1을 제거하고 크기를 1로 줄입니다.
std::remove 사용 사례
제거의 기본 용도는 지우기-제거 관용구이지만 다음과 같은 다른 상황에서도 활용할 수 있습니다.
위 내용은 C에서 std::remove는 어떻게 작동하며, std::remove와 std::erase의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!