之间有什么区别
someVector.clear();
std::vector<int> ().swap(someVector);
和
someVector.clear();
std::vector<int> (someVector).swap(someVector);
还是他们完成同一件事?
编辑:
目的是释放与someVector关联的内存。
最佳答案
他们都试图清除向量并重新分配它正在使用的存储。不能简单地调用clear()
来做到这一点。它可能会保留向量的容量。
在第一种情况下,对clear
的调用是没有意义的;第二行将向量与一个空向量交换,然后释放内存。
在第二种情况下,仍然不能保证将释放内存。复制载体可能会或可能不会保留容量。
这样做的方法是:
std::vector<int> ().swap(someVector);
在C ++ 11中,您也可以在
shrink_to_fit()
之后调用clear()
;但这也不能保证释放内存。