Строение строковых классов. Поддержка распределителей памяти

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

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

  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 шаге, но дополнительно позволяют передать пользовательский
объект распределителя памяти. Если строка инициализируется другой строкой, то вместе с содержимым копируется и распределитель памяти.

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий