Technologieaustausch

STL Review – Serielle Container und Containeradapter Teil

2024-07-08

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

STL-Rezension

1. Gemeinsame Container

Wie man diese Container aus allgemeinen Schnittstellen, Iteratortypen und zugrunde liegenden Implementierungen einführt

Fügen Sie hier eine Bildbeschreibung ein


Sequenzcontainer

Schnur

Genau genommen gehört String nicht zu STL, sondern zur C-Standardbibliothek

**Zugrunde liegende Implementierung: **String ist im Wesentlichen eine Sequenztabelle vom Typ char. Da die spezifische Implementierung unter verschiedenen Compilern unterschiedlich ist, stelle ich hier nur ein kurzes Antwortgerüst von mir bereit.

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;

Tatsächlich enthält die Zeichenfolge in der VS-Serie einen Zeiger und eine Vereinigung (ein Array und einen Zeiger). Wenn die Länge der Zeichenfolge weniger als 16 Byte beträgt, wird das zuvor geöffnete Array verwendet Bytes wird Platz auf dem Heap beantragt und der Zeiger wird verwendet), Größe und Kapazität

Unter g enthält die Zeichenfolge nur einen Zeiger, der auf einen Speicherplatz auf dem Heap zeigt, einschließlich eines Zeigers, der auf den für die Zeichenfolge geöffneten Speicherplatz, die Referenzanzahl, die Größe und die Kapazität zeigt. Diese Referenzanzahl ermöglicht die Zuweisung und das Kopieren dieser Objekte, sodass nur a erforderlich ist Flache Kopie, um die Referenzanzahl zu erhöhen. Das war's

Iteratortyp: Iterator mit wahlfreiem Zugriff

Häufig verwendete Schnittstellen:

FunktionsnameFunktion
Größe / LängeGibt die Anzahl gültiger Zeichen in einer Zeichenfolge zurück
löschen / reservieren / Größe ändernLöschen Sie die gültigen Zeichen/reservieren Sie Platz/reduzieren Sie die Anzahl der gültigen Zeichen auf n und füllen Sie den zusätzlichen Platz mit dem Zeichen c
Operator[]Gibt das Zeichen an der Pos-Position zurück
push_back / anhängen / Operator =Fügen Sie am Ende der Zeichenfolge das Zeichen c/string/string ein
c_strGibt eine Zeichenfolge im C-Format zurück
finden / rfind nposSuchen Sie das Zeichen c ausgehend von der Pos-Position der Zeichenfolge und gehen Sie (zurück/vor) und geben Sie die Position des Zeichens in der Zeichenfolge zurück, die nicht zurückgegeben wird.
TeilstrFangen Sie ausgehend von der Pos-Position in str n Zeichen ab und geben Sie sie zurück
Operator