Пространства имён
Варианты
Действия

std::basic_string<CharT,Traits,Allocator>::capacity

Материал из cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
Функции-элементы
Доступ к элементам
Итераторы
Ёмкость
basic_string::capacity
Операции
Поиск
Константы
Правила вывода (C++17)
Функции, не являющиеся элементами
Ввод/Вывод
Сравнение
(до C++20)(до C++20)(до C++20)(до C++20)(до C++20)(C++20)
Числовые преобразования
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Вспомогательные классы
 
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 функция-элемент) [править]