大きなSTLコンテナを「クリア」する最速の方法は何ですか? 私のアプリケーションではstd::map
、10000 要素などの大きなサイズを処理する必要があります。
をクリアするために、次の 3 つの方法をテストしましたstd::map
。
- 必要になるたびに新しいコンテナーを作成します。
- 呼び出し
map::clear()
方法。 - 呼び出し
map::swap()
方法。
::swap()
最良の結果をもたらすようです。なぜそうなのか、誰でも説明できますか?map::swap()
メソッドを使用することが std::map を「クリア」する適切な方法であると言っても過言ではありませんか? set
、vector
、list
などの他の STL コンテナでも同じですか。
m_timer_start = boost::posix_time::microsec_clock::local_time();
// test_map.clear();
test_map.swap(test_map2);
for (int i = 0; i< 30000; i++){
test_map.insert(std::pair<int, int>(i, i));
}
// std::map<int, int> test_map_new;
// for (int i = 0; i< 30000; i++){
// test_map_new.insert(std::pair<int, int>(i, i));
// }
m_timer_end = boost::posix_time::microsec_clock::local_time();
std::cout << timer_diff(m_timer_start, m_timer_end).fractional_seconds() << std::endl; // microsecond