gpt4 book ai didi

c++ - STL vector 交换结构 (C++)

转载 作者:行者123 更新时间:2023-11-28 00:44:18 27 4
gpt4 key购买 nike

有什么区别

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() 之后调用 shr​​ink_to_fit();但这也不能保证释放内存。

关于c++ - STL vector 交换结构 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154172/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com