我记得以前不止一次看到类似这样的说法:
清空 vector 请使用 vector<T>.swap(a),因为这样是 O(1)O(1)O(1) 的,而不要用 O(size)O(size)O(size) 的 a.clear()。
vector<T>.swap(a)
a.clear()
但是这样真的有用吗?
采用前者时,原本 a 所用的空间仍然会在某个时刻被释放,时间上感觉就和后者没有什么区别了。而且还浪费构造新 vector 的时间。还不好记。
有没有根据底层原理的解释,或者实测结果啊