컨테이너의 값 범위를 지우는 함수를 구현해야합니다. 그래서 예를 들어C++ 벡터; remove_if 하나의 값만 제거 하시겠습니까?
eraseRange(v, 1.5, 24);
는 1.5 컨테이너 V 미만 24보다 큰 값을 삭제할 것입니다 그리고 내 기능은 내가 사용하는 목록, 완벽하게 작동합니다.
container.erase(remove_if(container.begin(), container.end(), rg));
어디 RG 검사가 있다면 그 범위 안에서 (그 부분의 구현은 문제가 아니므로, 나는 그것에 대해 자세히 설명하지 않을 것이다).
그러나 벡터에 대해 eraseRange를 호출하고 유사한 방법을 사용하여 값을 지우면 첫 번째 값만 지워집니다. 그래서 1에서 10까지의 숫자를 가진 벡터를 가지고 있다면 :
eraseRange(v, 3, 7);
3 개만 삭제됩니다.
이제는 일반적으로 문제가되지 않으므로 값을 확인하기 위해 반복기를 사용합니다. 이 특정 연습을 제외하고 for/while/do 루프는 명시 적으로 금지되어 있습니다 ...
따라서 문제는 임의 액세스 반복기가있는 컨테이너의 문제인 것 같습니다. 그리고 대안으로 무엇을 구현해야할지 모르겠습니다. 도움?
고마워요! 내가 필요한 것. – Fault