std::list<T,Allocator>:: erase
| (1) | ||
|
iterator erase
(
iterator pos
)
;
|
(C++11 이전) | |
|
iterator erase
(
const_iterator pos
)
;
|
(C++11 이후)
(C++26 이후 constexpr) |
|
| (2) | ||
|
iterator erase
(
iterator first, iterator last
)
;
|
(C++11 이전) | |
|
iterator erase
(
const_iterator first, const_iterator last
)
;
|
(C++11 이후)
(C++26 이후 constexpr) |
|
컨테이너에서 지정된 요소들을 삭제합니다.
[
first
,
last
)
내의 요소들을 제거합니다.
삭제된 요소에 대한 참조와 반복자는 무효화됩니다. 다른 참조와 반복자는 영향을 받지 않습니다.
반복자 pos 는 유효하고 역참조 가능해야 합니다. 따라서 end() 반복자(유효하지만 역참조 불가능한)는 pos 의 값으로 사용할 수 없습니다.
이터레이터 first 는 역참조 가능할 필요가 없습니다. 만약 first == last 인 경우: 빈 범위를 삭제하는 것은 아무 작업도 수행하지 않습니다.
목차매개변수
반환값제거된 마지막 요소 다음의 반복자.
만약
[
first
,
last
)
가 빈 범위라면,
last
가 반환됩니다.
복잡도
1)
상수.
2)
first
와
last
사이의 거리에 선형적으로 비례합니다.
참고컨테이너 요소를 조건자(predicate)에 기반하여 지워야 할 때, 컨테이너를 반복하면서 단항 예제
이 코드 실행
#include <list> #include <iostream> #include <iterator> void print_container(const std::list<int>& c) { for (int i : c) std::cout << i << ' '; std::cout << '\n'; } int main() { std::list<int> c{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; print_container(c); c.erase(c.begin()); print_container(c); std::list<int>::iterator range_begin = c.begin(); std::list<int>::iterator range_end = c.begin(); std::advance(range_begin, 2); std::advance(range_end, 5); c.erase(range_begin, range_end); print_container(c); // 모든 짝수 삭제 for (std::list<int>::iterator it = c.begin(); it != c.end();) { if (*it % 2 == 0) it = c.erase(it); else ++it; } print_container(c); } 출력: 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 6 7 8 9 1 7 9 결함 보고서다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
참고 항목
|