[英]Does vector.swap() and vector.erase() free all the allocated memory if the vector is a vector of vectors?
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.erase()之后是否釋放了與a [10]相關的內存?
問題2:交換后是否釋放了與所有其他向量相關的內存?
1)是,對象(這里的vector<double>
)被破壞。 但是值得注意的是,外部vector
(您在其上調用了erase()
vector
)不會改變其容量。
2)是的,它將被清空。 您也可以調用a.clear()
但它不會更改外部向量的容量。
您可以通過調用shrink_to_fit
(僅適用於C ++ 11和更高版本)來請求刪除不必要的容量,但是它沒有約束力。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.