Teknologian jakaminen

STL Review-Serial Containers and Container Adapters Part

2024-07-08

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

STL arvostelu

1. Yleiset säiliöt

Kuinka esitellä nämä säilöt yleisistä liitännöistä, iteraattorityypeistä ja taustalla olevista toteutuksista

Lisää kuvan kuvaus tähän


sekvenssisäiliö

merkkijono

Tarkkaan ottaen merkkijono ei kuulu stl:ään, se kuuluu C-standardin kirjastoon

**Perustoteutus: **String on pohjimmiltaan char-tyyppinen sekvenssitaulukko. Koska eri kääntäjien erityinen toteutus on erilainen, tarjoan tässä vain lyhyen vastauskehykseni.

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;

Itse asiassa VS-sarjassa merkkijono sisältää osoittimen ja liiton (taulukon ja osoittimen), jos merkkijonon pituus on alle 16 tavua, käytetään etukäteen avattua taulukkoa tavua, kasaan haetaan tilaa ja osoitinta käytetään pistettä), kokoa ja kapasiteettia

Kohdassa g merkkijono sisältää vain osoittimen, joka osoittaa keon välilyöntiä, mukaan lukien merkkijonolle avautuvaan tilaan osoittavan osoittimen, viitemäärän, koon ja kapasiteetin matala kopio viitemäärän lisäämiseksi

Iteraattorin tyyppi: Random access iterator

Yleisesti käytetyt rajapinnat:

Toiminnon nimiToiminto
koko/pituusPalauttaa kelvollisten merkkien määrän merkkijonossa
tyhjennä / varaa / muuta kokoaTyhjennä kelvolliset merkit/varaa tila/vähennä kelvollisten merkkien määrää n:ksi ja täytä ylimääräinen tila merkillä c
operaattori[]Palauttaa merkin positiossa
push_back / liitä / operaattori =Lisää merkki c/string/string merkkijonon loppuun
c_strPalauta C-muotoinen merkkijono
etsi / rfind nposEtsi merkki c alkaen merkkijonon positiosta ja menossa (takaisin/ennen), ja palauta merkkijonon paikkaa npos ei palauteta.
substrAloita kohdasta str, sieppaa n merkkiä ja palauta ne
operaattori