std::basic_string<CharT,Traits,Allocator>::capacity
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) << " has capacity " << s.capacity() << ".\n";
}
int main()
{
std::string s{"Exemplar"};
show_capacity(s);
s += " is an example string.";
show_capacity(s);
s.clear();
show_capacity(s);
std::cout << "\nDemonstrate the capacity's growth policy."
"\nSize: Capacity: Ratio:\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( 7) << g.size()
<< std::setw(11) << g.capacity()
<< std::setw(10) << g.capacity() / static_cast<float>(old_cap) << '\n';
old_cap = g.capacity();
}
}Возможный вывод:
"Exemplar" has capacity 15. "Exemplar is an example string." has capacity 30. "" has capacity 30. Demonstrate the capacity's growth policy. Size: Capacity: Ratio: 16 30 2 31 60 2 61 120 2 121 240 2 241 480 2
См. также
| возвращает количество символов (публичный метод-член) |
|
| резервирует хранилище (публичный метод-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/basic_string/capacity