Compartilhamento de tecnologia

Parte de contêineres seriais e adaptadores de contêineres de revisão STL

2024-07-08

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

Revisão STL

1. Recipientes comuns

Como apresentar esses contêineres, a partir de interfaces comuns, tipos de iteradores e implementações subjacentes

Insira a descrição da imagem aqui


contêiner de sequência

corda

A rigor, string não pertence ao stl, pertence à biblioteca padrão C

**Implementação subjacente: **String é essencialmente uma tabela de sequência do tipo char Como a implementação específica em diferentes compiladores é diferente, forneço apenas uma estrutura de resposta curta minha aqui.

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;

Na verdade, na série VS, a string contém um ponteiro e uma união (um array e um ponteiro. Se o comprimento da string for menor que 16 bytes, o array aberto antecipadamente será usado se for maior que 16). bytes, o espaço será aplicado no heap e o ponteiro será usado), tamanho e capacidade.

Em g, a string contém apenas um ponteiro apontando para um espaço no heap, incluindo um ponteiro apontando para o espaço aberto para a string, contagem de referência, tamanho e capacidade. Essa contagem de referência permite a atribuição e cópia desses objetos para exigir apenas um. cópia superficial para aumentar a contagem de referências.

Tipo de iterador: Iterador de acesso aleatório

Interfaces comumente usadas:

Nome da funçãoFunção
tamanho / comprimentoRetorna o número de caracteres válidos em uma string
limpar / reservar / redimensionarLimpe os caracteres válidos/reserve espaço/reduza o número de caracteres válidos para n e preencha o espaço extra com o caractere c
operador[]Retorna o caractere na posição pos
push_back / anexar / operador =Insira o caractere c/string/string no final da string
c_strRetornar string de formato C
encontrar / rfind nposEncontre o caractere c começando na posição pos da string e indo (voltar/antes) e retornar a posição do caractere na string npos não é retornado.
substrComeçando na posição pos em str, intercepte n caracteres e retorne-os
operador