моя контактная информация
Почтамезофия@protonmail.com
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Обзор STL
Как представить эти контейнеры из общих интерфейсов, типов итераторов и базовых реализаций.
Строго говоря, строка не принадлежит 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 символов и верните их. |
оператор |