데이타를 삭제할 때에도 조심스럽게 선택할것이 많다.

컨테이너네서 특정한 값을 가진 객체를 모두 없애려면







  • 컨테이너가 vector, string 혹은 deque 이면, erase-remove 합성문을 씁니다.
  • 컨테이너가 list 이면, list::remove 를 씁니다.
  • 컨테이너가 표준 연관 컨테이너이면, erase 멤버함수를 씁니다.


컨테이너에서 특정한 술어 구문을 만족하는 객체를 모두 없애려면







  • 컨테이너가 vector, string 혹은 deque 이면, erase-remove_if 합성문을 씁니다.
  • 컨테이너가 list이면, list::remove_if를 씁니다.
  • 컨테이너가 표준 연관 컨테이너이면, remove_copy_if와 swap을 쓰든지, 컨테이너 내부를 도는 루프에서 erase를 호출하면서 erase에 넘기는 반복자를 후위증가연산자로 증가시킵니다.


루프 안에서 무엇인가를 하려면(객체 삭제도 포함해서):







  • 컨테이너가 표준 시퀀스 컨테이너이면, 컨테이너 요소를 하나씩 사용하는 루프를 작성합니다. 이때 erase를 호출할 때마다 그 함수의 반환값으로 반복자를 업데이타하는 일을 꼭 해야 합니다.
  • 컨테이너가 표준 연관 컨테이너이면, 역시 컨테이너 요소를 하나씩 사용하는 루프를 작성합니다. 이때 erase를 호출하면서 erase에 넘기는 반복자를 후위 증가 연산자로 증가 시킵니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다