之间有什么区别

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();但这也不能保证释放内存。

07-24 14:08