Обмен технологиями

Обзор STL: серийные контейнеры и адаптеры для контейнеров

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Обзор STL

1. Общие контейнеры

Как представить эти контейнеры из общих интерфейсов, типов итераторов и базовых реализаций.

Вставьте сюда описание изображения


контейнер последовательности

нить

Строго говоря, строка не принадлежит stl, она принадлежит стандартной библиотеке C.

**Базовая реализация: **String, по сути, представляет собой таблицу последовательности типа char. Поскольку конкретная реализация в разных компиляторах различна, я привожу здесь лишь краткую структуру ответов.

class string
{
public:
    typedef char* iterator;
    typedef const char* const_iterator; 
private:
    char* _str; 		// 堆上开辟的顺序表空间
    size_t _size; 		// 有效字符个数
    size_t _capacity; 	// _str的空间大小

    static const size_t npos; // 最大字符串大小
};

const size_t string::npos = -1;

Фактически, в серии VS строка содержит указатель и объединение (массив и указатель). Если длина строки меньше 16 байт, будет использоваться заранее открытый массив. Если она больше 16. байтах, в куче будет использовано пространство, а указатель будет использован в виде точки), размер и емкость.

В g строка содержит только указатель, указывающий на пространство в куче, включая указатель, указывающий на пространство, открытое для строки, счетчик ссылок, размер и емкость. Этот счетчик ссылок позволяет присваивать и копировать эти объекты, требуя только неглубокий текст для увеличения количества ссылок.

Тип итератора: Итератор произвольного доступа

Часто используемые интерфейсы:

Имя функцииФункция
размер/длинаВозвращает количество допустимых символов в строке
очистить / зарезервировать / изменить размерОчистите допустимые символы/зарезервируйте пространство/уменьшите количество допустимых символов до n и заполните дополнительное пространство символом c.
оператор[]Возвращает символ в позиции позиции
push_back / добавить / оператор =Вставить символ c/string/string в конец строки
c_strВозвращает строку формата C
найти / rfind nposНайдите символ c, начиная с pos-позиции строки и далее (назад/перед), и верните позицию символа в строке. npos не возвращается.
подстрНачиная с позиции pos в str, перехватите n символов и верните их.
оператор