그것은 또한 std::vector/std::map
위한 erase(begin, end)
전화 소자 반복하는 erase
멤버 함수 및 반복기를 제공하는 다른 STL 컨테이너 (list, set, deque etc
)에 유효한 안전하다. ,
c.erase(c.begin(), c.begin());
c.erase(c.end(), clend());
std::vector::erase(beg,end)
는 범위 [BEG의 모든 요소를 제거 두 범위는 유효 이하
은 당신이 유효 범위 (간청 단부)에 통과, erase
더 노력을 취하지 않는다 끝) 다음 요소의 위치를 반환합니다.
std::map::erase(beg,end)
[beg, end] 범위의 모든 요소를 제거하고 다음 위치를 반환합니다 (C++ 11 이전에는 아무 것도 반환하지 않음). 당신이 볼 수 있듯이 erase(begin(),end());
가 clear()
와 동일
void clear() noexcept;
Effects: Behaves as if the function calls:
erase(begin(), end());
void assign(size_type n, const T& t);
Effects:
erase(begin(), end());
insert(begin(), first, last);
:
는 STL 내부 구현에서는 같은 몇 가지 기능에 erase(begin,end)
를 호출합니다.
또는, More Effective STL
에서 제안 된 STL 컨테이너 취소 swap
를 호출 할 수 있습니다
vector<Contestant> v;
vector<Contestant>().swap(v); //clear v and minimize its capacity
괜찮지 만, 왜'명확()'를 호출하지? – juanchopanza
@juanchopanza 호기심 그게 전부 야. 더 깨끗하고 깨끗한 상태로 깨끗하게 사용할 것입니다. –