std::basic_string<CharT,Traits,Allocator>::capacity
Материал из cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev ">
</tbody><tbody>
</tbody>
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 функция-элемент) |