有什么区别
someVector.clear();
std::vector<int> ().swap(someVector);
和
someVector.clear();
std::vector<int> (someVector).swap(someVector);
还是他们完成了同样的事情?
编辑: 目标是释放与 someVector 关联的内存。
最佳答案
它们都试图清除 vector 并释放它正在使用的存储空间。简单地调用 clear()
并不能保证做到这一点;它可能会使 vector 的容量保持原样。
在第一种情况下,调用clear
是没有意义的;第二行将 vector 与一个空 vector 交换,然后释放内存。
在第二种情况下,仍然不能保证内存会被释放;复制 vector 可能会也可能不会保留容量。
实现方式是:
std::vector<int> ().swap(someVector);
在 C++11 中,您可以在 clear()
之后调用 shrink_to_fit()
;但这也不能保证释放内存。
关于c++ - STL vector 交换结构 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154172/