Compartir tecnología

Revisión de STL: parte de contenedores en serie y adaptadores de contenedores

2024-07-08

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

revisión STL

1. Contenedores comunes

Cómo presentar estos contenedores, desde interfaces comunes, tipos de iteradores e implementaciones subyacentes

Insertar descripción de la imagen aquí


contenedor de secuencia

cadena

Estrictamente hablando, la cadena no pertenece a stl, pertenece a la biblioteca estándar de C.

**Implementación subyacente: **La cadena es esencialmente una tabla de secuencia de tipo char. Debido a que la implementación específica en diferentes compiladores es diferente, aquí solo proporciono un marco de respuesta breve.

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;

De hecho, en la serie VS, la cadena contiene un puntero y una unión (una matriz y un puntero). Si la longitud de la cadena es inferior a 16 bytes, se utilizará la matriz abierta de antemano si es mayor que 16. bytes, se solicitará espacio en el montón y se utilizará el puntero, tamaño y capacidad.

Bajo g, la cadena solo contiene un puntero que apunta a un espacio en el montón, incluido un puntero que apunta al espacio abierto para la cadena, el recuento de referencias, el tamaño y la capacidad. Este recuento de referencias permite que la asignación y copia de estos objetos solo requieran un. copia superficial para aumentar el recuento de referencias.

Tipo de iterador: Iterador de acceso aleatorio

Interfaces de uso común:

Nombre de la funciónFunción
Tamaño / longitudDevuelve el número de caracteres válidos en una cadena.
Limpiar / Reservar / Cambiar tamañoBorre los caracteres válidos/reserve espacio/reduzca el número de caracteres válidos a n y complete el espacio adicional con el carácter c
operador[]Devuelve el carácter en la posición pos.
push_back / añadir / operador =Inserte el carácter c/cadena/cadena al final de la cadena
c_strDevolver cadena en formato C
buscar/rfind nposEncuentre el carácter c comenzando desde la posición pos de la cadena y yendo (hacia atrás/antes), y devuelva la posición del carácter en la cadena no se devuelve.
substrComenzando desde la posición pos en str, intercepte n caracteres y devuélvalos
operador