C++ STL vector容量(capacity)和大小(size)的區別

2020-07-16 10:05:21
很多初學者分不清楚 vector 容器的容量(capacity)和大小(size)之間的區別,甚至有人認為它們表達的是一個意思。本節將對 vector 容量和大小各自的含義做一個詳細的介紹。

vector 容器的容量(用 capacity 表示),指的是在不分配更多記憶體的情況下,容器可以儲存的最多元素個數;而 vector 容器的大小(用 size 表示),指的是它實際所包含的元素個數。

對於一個 vector 物件來說,通過該模板類提供的 capacity() 成員函數,可以獲得當前容器的容量;通過 size() 成員函數,可以獲得容器當前的大小。例如:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    std::vector<int>value{ 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47 };
    value.reserve(20);
    cout << "value 容量是:" << value.capacity() << endl;
    cout << "value 大小是:" << value.size() << endl;
    return 0;
}
程式輸出結果為:

value 容量是:20
value 大小是:15

結合該程式的輸出結果,圖 1 可以更好的說明 vector 容器容量和大小之間的關係。


圖 1 vector 容量和大小的區別