C++中的std::vector
是一個動態數組,它可以根據需要自動調整大小
std::vector
預先分配的內存空間,用于存儲元素。當你向vector
添加元素時,如果當前容量不足以容納新元素,vector
會自動增加其容量。std::vector
中當前存儲的元素數量。std::vector
提供了幾個函數來管理容量:
size()
:返回vector
中當前存儲的元素數量。capacity()
:返回vector
當前的容量。reserve(size_t n)
:為vector
預留至少n
個元素的內存空間。如果n
大于當前容量,vector
會重新分配內存以滿足請求。這可以減少在添加大量元素時多次重新分配內存的開銷。shrink_to_fit()
:請求vector
減少其容量以與其大小相匹配。這可以釋放未使用的內存空間。注意,實際效果取決于具體實現,因為標準庫可能不會立即釋放內存。下面是一個示例,展示了如何使用這些函數:
#include<iostream>
#include<vector>
int main() {
std::vector<int> vec;
// 添加元素,觀察容量變化
for (int i = 0; i < 10; ++i) {
vec.push_back(i);
std::cout << "Size: "<< vec.size() << ", Capacity: "<< vec.capacity()<< std::endl;
}
// 預留容量
vec.reserve(20);
std::cout << "After reserve: Size: "<< vec.size() << ", Capacity: "<< vec.capacity()<< std::endl;
// 縮小容量以匹配大小
vec.shrink_to_fit();
std::cout << "After shrink_to_fit: Size: "<< vec.size() << ", Capacity: "<< vec.capacity()<< std::endl;
return 0;
}
請注意,std::vector
的具體實現可能因庫和編譯器而異。因此,在實際應用中,你可能會觀察到不同的容量增長策略。