gpt4 book ai didi

c++ - 将 std vector 重新分配给默认构造函数 vector 是删除的好方法吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:21:20 25 4
gpt4 key购买 nike

关于清除 std::vector 的问题和答案太多了我想知道为什么在我读过的所有文章中,没有人只是说:

existingVector = std::vector<whatever>();

这不是清除 vector 的简单方法吗?

最佳答案

分配是可以的,但可以允许优化实现保留原始内存缓冲区,以避免重新分配。

强制释放 vector 的传统智慧是“与临时交换”:

#include <vector>
#include <iostream>


int main() {

std::vector<int> a(256);

std::vector<int>().swap(a);

std::cout << a.size() << " / " << a.capacity();

return 0;
}

以上将总是打印0 / <minimum_capacity_for_vec_impl>因为 vector 必须交换它们的内部缓冲区。然后立即销毁临时文件,同时释放内存。


<minimum_capacity_for_vec_impl> 通常 为 0,因为默认构造函数是 noexcept ,因此不应进行动态内存分配。但是库实现者有时可以通过他们的优化发挥创造力。

关于c++ - 将 std vector 重新分配给默认构造函数 vector 是删除的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41282638/

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