gpt4 book ai didi

c++ - 如果 vector 是 vector 的 vector ,vector.swap() 和 vector.erase() 是否释放所有分配的内存?

转载 作者:行者123 更新时间:2023-11-30 03:37:49 28 4
gpt4 key购买 nike

vector<vector<double>> a;
for (int i=0;i<100;i++)
{
vector<double> v(i+1);
iota(v.begin(),v.end(),1);
a.push_back(v);
}
a.erase(a.begin()+10);
vector<vector<double>>(a).swap(a);

问题 1:与 a[10] 关联的内存是否在 a.erase() 之后释放?

问题 2:与所有其他 vector 关联的内存是否在交换后释放?

最佳答案

1) 是的,对象(此处为 vector<double>)已被销毁。但值得注意的是,外层vector (您在 erase() 上调用的)不会更改其容量。

2) 是的,它会被清空。您也可以调用a.clear()但它不会改变外部 vector 的容量。

您可以请求通过调用 shrink_to_fit 删除不必要的容量(仅限 C++11 及更高版本),但它不具有约束力。

关于c++ - 如果 vector 是 vector 的 vector ,vector.swap() 和 vector.erase() 是否释放所有分配的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39989666/

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