std::list
とstd::set
を消去するには、最速で最も信頼性の高い方法は何ですか?C++でコンテナをクリアする最も良い方法は何ですか?
clear
バージョンで)すべてのこれらのオプションは、ほぼ同じ性能であろう
// 1st
list.clear();
set.clear();
// 2nd
list = {};
set = {};
// 3rd
list.swap(std::list<some_type>{});
set.swap(std::set<some_type>{});
あなたの例は2つのノードベースのコンテナであるのは偶然でしょうか? 'std :: vector'では、表示される操作の意味が異なるからです。あなたがすでにこれを知っているなら、多分質問に言及してください。 – 5gon12eder
私はすでに 'std :: vector swap trick'を知っていました。私はこれらの2つのデータ構造を内部的に使用するクラスを持っているので、私は興味がありました。 –
現代のコンパイラを使用して最適化されたビルドから生成されたasmを見てみると、5分の作業トップが得られます。 –