kzen.dev
  • Întrebări
  • Tag-uri
  • Utilizatori
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 Drax
Drax
Question

Ce este string_view?

string_view s-a propus o funcție în C++ Bibliotecă Fundamentele TS(N3921) adăugat la C++17

După câte am înțeles, este un tip care reprezintă un fel de string "concept", care este o vizualizare de orice tip de container, care ar putea stoca ceva vizibile ca un șir de caractere.

  • E în regulă ?
  • Ar trebui să canonice const std::string& parametru de tip deveni string_view ?
  • Există un alt punct important despre string_view să ia în considerare ?
141 2013-12-27T16:10:11+00:00 1
 Drax
Drax
Întrebarea editată 12 octombrie 2018 в 11:07
Programare
c++
fundamentals-ts
string-view
c++17
Solution / Answer
Kerrek SB
Kerrek SB
27 decembrie 2013 в 4:18
2013-12-27T16:18:27+00:00
Mai mult
Sursă
Editează
#23213706

În scopul de orice și toate tipurile de "string referință" și "matrice de referință" propuneri este de a evita copierea datelor care este deja deținut în altă parte și de care numai un non-mutant punct de vedere este necesar. Anii string_view în întrebare este o astfel de propunere; nu au fost cele anterioare numitstring_ref " și " array_ref, de asemenea.

Ideea este întotdeauna la magazin o pereche de pointer la primul element și dimensiunea unor existent matrice de date sau șir de caractere.

Un asemenea punct de vedere-se ocupe de clasă ar putea fi trecut în jurul valorii de ieftin prin valoare și ar oferi ieftine substringing operațiuni (care pot fi puse în aplicare cât mai simplu indicator trepte și dimensiunea ajustări).

Multe utilizări de siruri de caractere don't nevoie reală de a deține siruri de caractere, și șirul în cauză de multe ori va fi deja deținută de altcineva. Deci nu este un veritabil potențial pentru creșterea eficienței prin evitarea inutile copii (cred că de toate alocările și excepții puteți salva).

Original C siruri de caractere au fost suferă de problema asta terminator null fost parte din șir APIs, și ca să n-o't de ușor de a crea siruri de caractere fără mutații de fond al sistemului string (à la strtok). În C++, acest lucru este ușor de rezolvat prin stocarea lungimea separat și ambalaj pointer și dimensiuni într-o singură clasă.

Un obstacol major și divergență din biblioteca standard C++ filozofie care mă pot gândi este că astfel de "referențială vedere" clase complet diferite proprietate semantica de restul biblioteca standard. Practic, orice altceva în biblioteca standard este necondiționat în condiții de siguranță și corectă (dacă se compilează, l's corecte). Cu referire clase, cum ar fi acest lucru, care's nu mai e adevărat. Corectitudinea programului depinde de ambient cod care folosește aceste clase. Așa că's mai greu de a verifica și de a învăța.

163
0
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
Utilizatori
Toate
Nou
Populare
1
工藤 芳則
Înregistrat 6 zile în urmă
2
Ирина Беляева
Înregistrat 1 săptămână în urmă
3
Darya Arsenyeva
Înregistrat 1 săptămână în urmă
4
anyta nuam-nuam (LapuSiK)
Înregistrat 1 săptămână în urmă
5
Shuhratjon Imomkulov
Înregistrat 1 săptămână în urmă
ID
JA
KO
RO
RU
© kzen.dev 2023
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire