2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
STL arvostelu
Kuinka esitellä nämä säilöt yleisistä liitännöistä, iteraattorityypeistä ja taustalla olevista toteutuksista
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 nimi | Toiminto |
---|---|
koko/pituus | Palauttaa kelvollisten merkkien määrän merkkijonossa |
tyhjennä / varaa / muuta kokoa | Tyhjennä 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_str | Palauta C-muotoinen merkkijono |
etsi / rfind npos | Etsi merkki c alkaen merkkijonon positiosta ja menossa (takaisin/ennen), ja palauta merkkijonon paikkaa npos ei palauteta. |
substr | Aloita kohdasta str, sieppaa n merkkiä ja palauta ne |
operaattori |