Partage de technologie

STL Review-Serial Conteneurs et adaptateurs de conteneurs

2024-07-08

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

Revue STL

1. Conteneurs communs

Comment présenter ces conteneurs, à partir des interfaces communes, des types d'itérateurs et des implémentations sous-jacentes

Insérer la description de l'image ici


conteneur de séquence

chaîne

À proprement parler, la chaîne n'appartient pas à stl, elle appartient à la bibliothèque standard C

**Implémentation sous-jacente : **String est essentiellement une table de séquence de type char. Étant donné que l'implémentation spécifique sous différents compilateurs est différente, je ne fournis ici qu'un court cadre de réponse.

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;

En effet, sous la série VS, la chaîne contient un pointeur et une union (un tableau et un pointeur). Si la longueur de la chaîne est inférieure à 16 octets, le tableau ouvert au préalable sera utilisé. Si elle est supérieure à 16. octets, de l'espace sera demandé sur le tas et le pointeur sera utilisé), taille et capacité.

Sous g, la chaîne ne contient qu'un pointeur pointant vers un espace sur le tas, y compris un pointeur pointant vers l'espace ouvert pour la chaîne, le nombre de références, la taille et la capacité. Ce nombre de références permet l'affectation et la copie de ces objets pour ne nécessiter qu'un seul pointeur. copie superficielle pour augmenter le nombre de références.

Type d'itérateur : Itérateur d'accès aléatoire

Interfaces couramment utilisées :

Nom de la fonctionFonction
taille / longueurRenvoie le nombre de caractères valides dans une chaîne
effacer / réserver / redimensionnerEffacez les caractères valides/réservez de l'espace/réduisez le nombre de caractères valides à n et remplissez l'espace supplémentaire avec le caractère c
opérateur[]Renvoie le caractère en position pos
push_back / ajouter / opérateur =Insérer le caractère c/string/string à la fin de la chaîne
c_strRenvoie une chaîne au format C
trouver / trouver des nposRecherchez le caractère c à partir de la position pos de la chaîne et en allant (en arrière/avant), et renvoyez la position du caractère dans la chaîne npos n'est pas renvoyée.
substrÀ partir de la position pos dans str, interceptez n caractères et renvoyez-les
opérateur