std::basic_string<CharT,Traits,Allocator>::capacity
Материал из cppreference.com
< cpp | string | basic string
size_type capacity()const; | (до C++11) | |
size_type capacity()constnoexcept; | (начиная с C++11) (до C++20) | |
constexpr size_type capacity()constnoexcept; | (начиная с C++20) | |
Возвращает количество символов, для которых в данный момент выделено место в строке.
Содержание |
[править]Параметры
(нет)
[править]Возвращаемое значение
Ёмкость выделенного в данный момент хранилища, т.е. хранилища, доступного для хранения элементов.
[править]Сложность
Константная.
[править]Примечание
Ячейки памяти, полученные от аллокатора, но недоступные для хранения какого-либо элемента, не учитываются в выделенном хранилище. Обратите внимание, что нулевой терминатор не является элементом std::basic_string.
[править]Пример
Запустить этот код
#include <iomanip>#include <iostream>#include <string> void show_capacity(std::stringconst& 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 функция-элемент) |