РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
215 of 815 menu

Метод capacity

Метод capacity возвращает текущую вместимость вектора, то есть количество элементов, которое вектор может хранить без необходимости перевыделения памяти. Вместимость не равна размеру вектора - она всегда больше или равна значению, возвращаемому методом size. Метод не принимает параметров и не изменяет вектор.

Синтаксис

vec.capacity()

Пример

Давайте создадим вектор с несколькими элементами и посмотрим его размер и вместимость:

#include <iostream> #include <vector> using namespace std; int main() { vector<int> vec = {1, 2, 3, 4, 5}; cout << "size: " << vec.size() << endl; cout << "capacity: " << vec.capacity() << endl; return 0; }

Результат выполнения кода:

"size: 5" "capacity: 5"

Пример

Давайте добавим элементы в вектор и посмотрим, как изменяется его вместимость:

#include <iostream> #include <vector> using namespace std; int main() { vector<int> vec; cout << "capacity: " << vec.capacity() << endl; vec.push_back(1); cout << "capacity: " << vec.capacity() << endl; vec.push_back(2); cout << "capacity: " << vec.capacity() << endl; vec.push_back(3); cout << "capacity: " << vec.capacity() << endl; return 0; }

Результат выполнения кода:

"capacity: 0" "capacity: 1" "capacity: 2" "capacity: 4"

Как видно из примера, при добавлении элементов вместимость увеличивается не на 1, а удваивается, когда места перестаёт хватать.

Пример

Давайте сравним размер и вместимость после удаления элементов из вектора:

#include <iostream> #include <vector> using namespace std; int main() { vector<int> vec = {1, 2, 3, 4, 5}; vec.reserve(10); cout << "size: " << vec.size() << endl; cout << "capacity: " << vec.capacity() << endl; vec.pop_back(); vec.pop_back(); cout << "size: " << vec.size() << endl; cout << "capacity: " << vec.capacity() << endl; return 0; }

Результат выполнения кода:

"size: 5" "capacity: 10" "size: 3" "capacity: 10"

После удаления элементов вместимость не уменьшается - память остаётся выделенной. Чтобы освободить её, можно использовать метод shrink_to_fit.

Смотрите также

  • метод size,
    который возвращает количество элементов в векторе
  • метод reserve,
    который резервирует память под элементы
  • метод shrink_to_fit,
    который уменьшает вместимость до размера
  • метод empty,
    который проверяет вектор на пустоту
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить