Синтаксис:
#include <vector> size_type capacity() const;
Функция capacity() возвращает количество элементов, которое может содержать вектор до того, как ему потребуется выделить больше места.
Код в примере использует разные способы установки вместимости двух векторов. Первый способ заключается в передаче аргумента конструктору, который инициализирует вектор 10-ю нулями, второй - в вызове функции reserve. Тем не менее, во втором случае действительный размер вектора остается равным нулю.
vector<int> v1(10); cout << "Вместимость v1 равна " << v1.capacity() << endl; cout << "Размер v1 равен " << v1.size() << endl; vector<int> v2; v2.reserve(20); cout << "Вместимость v2 равна " << v2.capacity() << endl; cout << "Размер v2 равен " << v2.size() << endl;
После запуска код выводит:
Вместимость v1 равна 10 Размер v1 равен 10 Вместимость v2 равна 20 Размер v2 равен 0
Контейнеры C++ были разработаны так, что их размер увеличивается динамически. Это освобождает программиста от забот о хранении произвольного числа элементов в контейнере. Тем не менее, иногда программист может улучшить производительность своей программы, дав подсказки компилятору о размере контейнеров, которые программа будет использовать. Эти подсказки, говорящие компилятору, какой ожидается размер контейнера, - вызов функции reserve и конструктора из примера.
Функция capacity() выполняется за константное время.