erase(begin, end)
forを呼び出すのは安全ですが、要素を反復処理するためのメンバ関数とイテレータを提供するstd::vector/std::map
他の STL container( ) に対しても有効です。list, set, deque etc
erase
有効な範囲 (beg,end) を渡す限り、以下の 2 つの範囲も有効であり、erase
何の努力も必要ありません。
c.erase(c.begin(), c.begin());
c.erase(c.end(), clend());
std::vector::erase(beg,end)
範囲 [beg,end) のすべての要素を削除し、次の要素の位置を返します。
std::map::erase(beg,end)
範囲 [beg,end) のすべての要素を削除し、次の位置を返します (C++11 より前では何も返されませんでした)。
STL 内部実装ではerase(begin,end)
、次のようないくつかの関数を呼び出します。
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);
ご覧のとおりerase(begin(),end());
、 と同じclear()
です。
swap
または、で提案されている STL コンテナーをクリアするために呼び出すこともできますMore Effective STL
。
vector<Contestant> v;
vector<Contestant>().swap(v); //clear v and minimize its capacity