C++的vector類提供了reserve()函數(shù),用于預留一定的內存空間,以便在后續(xù)的插入操作中避免不必要的重新分配和復制元素的操作。其語法如下:
void reserve(size_type n);
其中,n是預留的元素數(shù)量,size_type是vector類定義的無符號整數(shù)類型。
使用reserve()函數(shù)可以在vector中預先分配一定的內存空間,但不會改變vector的大小。當插入的元素數(shù)量超過當前預留的空間時,vector會自動重新分配內存空間。
使用reserve()函數(shù)的主要優(yōu)勢在于,它可以減少vector在插入操作時重新分配內存空間的次數(shù),從而提高插入元素的效率。預先分配足夠的內存空間可以避免頻繁的內存分配和復制操作,從而節(jié)省時間和資源。
下面是一個使用reserve()函數(shù)的示例:
#include <iostream>
#include <vector>
int main() {
std::vector<int> myVector;
// 預留10個元素的內存空間
myVector.reserve(10);
// 插入元素
for (int i = 0; i < 20; i++) {
myVector.push_back(i);
}
// 輸出元素數(shù)量和容量
std::cout << "Size: " << myVector.size() << std::endl;
std::cout << "Capacity: " << myVector.capacity() << std::endl;
return 0;
}
輸出結果為:
Size: 20
Capacity: 20
可以看到,盡管插入了20個元素,但vector的容量并沒有超過預留的10個元素,這是因為reserve()函數(shù)預先分配了足夠的內存空間,避免了重新分配內存的開銷。