std::basic_string<CharT,Traits,Allocator>::capacity
Материал из cppreference.com
< cpp | string | basic string
size_type capacity() const; |
(до C++11) | |
size_type capacity() const noexcept; |
(начиная с C++11) (до C++20) |
|
constexpr size_type capacity() const noexcept; |
(начиная с C++20) | |
Возвращает количество символов, для которых в данный момент выделено место в строке.
Содержание |
[править] Параметры
(нет)
[править] Возвращаемое значение
Ёмкость выделенного в данный момент хранилища, т.е. хранилища, доступного для хранения элементов.
[править] Сложность
Константная.
[править] Примечание
Ячейки памяти, полученные от аллокатора, но недоступные для хранения какого-либо элемента, не учитываются в выделенном хранилище. Обратите внимание, что нулевой терминатор не является элементом std::basic_string.
[править] Пример
Запустить этот код
#include <iomanip> #include <iostream> #include <string> void show_capacity(std::string const& s) { std::cout << std::quoted(s) << " имеет ёмкость " << s.capacity() << ".\n"; } int main() { std::string s{"Exemplar"}; show_capacity(s); s += " это пример строки."; show_capacity(s); s.clear(); show_capacity(s); std::cout << "\nДемонстрирует политику роста ёмкости." "\nРазмер: Ёмкость: Коэффициент:\n" << std::left; std::string g; auto old_cap{g.capacity()}; for (int mark{}; mark != 5; ++mark) { while (old_cap == g.capacity()) g.push_back('.'); std::cout << std::setw( 9) << g.size() << std::setw(10) << g.capacity() << std::setw(12) << g.capacity() / static_cast<float>(old_cap) << '\n'; old_cap = g.capacity(); } }
Возможный вывод:
"Exemplar" имеет ёмкость 15. "Exemplar это пример строки." имеет ёмкость 30. "" имеет ёмкость 30. Демонстрирует политику роста ёмкости. Размер: Ёмкость: Коэффициент: 16 30 2 31 60 2 61 120 2 121 240 2 241 480 2
[править] Смотрите также
возвращает количество символов (public функция-элемент) | |
резервирует память (public функция-элемент) |