在C ++中清除容器的最佳方法是什么?

时间:2017-01-23 19:31:40

标签: c++ list set clear

清除std::liststd::set的最佳,最快和最可靠的方式是什么?

// 1st
list.clear();
set.clear();

// 2nd
list = {};
set = {};

// 3rd
list.swap(std::list<some_type>{});
set.swap(std::set<some_type>{});

2 个答案:

答案 0 :(得分:5)

所有这些选项大致具有相同的性能(clear版本需要比其他两个版本少一些操作,尽管性能损失可能是不可量化的),但版本(1){ {1}}是最明确的(就代码可读性而言),所以我会选择它。

值得注意的是container.clear是一个编译错误,因为list.swap(std::list<some_type>{});没有rvalue引用的重载,只接受非const左值引用。同上std::list::swap。您必须创建一个命名的临时对象并与之交换。

答案 1 :(得分:2)

这三者同样“可靠”。

.clear()的版本显然是最清晰的。 :)

但是,严肃地说,使用为任务命名的功能,以及为该任务专门添加的功能。这里不需要神秘的“诡计”。编写自我记录代码。

相关问题