Шаг 408.
Библиотека STL.
Строение строковых классов. Поддержка распределителей памяти

    На этом шаге мы перечислим распределители памяти, используемые для строк.

    Для строк также определены стандартные члены классов, обеспечивающие поддержку распределителей памяти.

  string::allocator_type
Тип распределителя памяти. Третий параметр шаблона basic_string<>. Для типа string - эквивалент allocator<char>.
  allocator_type string::get_allocator 0 const
Возвращает модель распределения памяти, используемую строкой.

    Распределитель памяти может также передаваться в необязательном аргументе всех конструкторов строк. Ниже перечислены строковые конструкторы с необязательными аргументами в соответствии со стандартом:

namespace std {
    template<class charT,
             class traits = char_traits<charT>,
             class Allocator = allocator<charT> >
    class basic_string {
      public:
        // Конструктор по умолчанию
        explicit basic_string(const Allocator& a = Allocator());

        // Копирующий конструктор
        basic_string(const basic_string& str,
                     size_type str_idx = 0,
                     size_type str_num = npos);
        basic_string(const basic_string& str,
                     size_type str_idx, size_type str_num,
                     const Allocator&);

        // Конструктор для C-строк
        basic_string(const charT* cstr,
                     const Allocator& a = Allocator());

        // Конструктор для символьных массивов
        basic_string(const charT* chars, size_type chars_len,
                     const Allocator& a = Allocator());

        // Конструктор для num экземпляров символа
        basic_string(size_type num, charT c,
                     const Allocator& a = Allocator());
        // Конструктор для интервала символов
        template<class InputIterator>
        basic_string(InputIterator beg, InputIterator end,
                     const Allocator& a = Allocator());
        ...
    };
}

    Эти конструкторы ведут себя так, как описано на 389 шаге, но дополнительно позволяют передать пользовательский объект распределителя памяти. Если строка инициализируется другой строкой, то вместе с содержимым копируется и распределитель памяти.

    Со следующего шага мы начнем знакомиться с числовыми типами.




Предыдущий шаг Содержание Следующий шаг