logo

Matrice de șiruri în C++ - 5 moduri diferite de a crea

În C++, un șir este, de obicei, doar o matrice de (sau o referință/punctează către) caractere care se termină cu caracterul NULL „ ‘. Un șir este o matrice unidimensională de caractere și o matrice de șiruri este o matrice bidimensională de caractereunde fiecare rând conține un șir.

Mai jos sunt cele 5 moduri diferite de a crea o matrice de șiruri de caractere în C++:



  1. Folosind Indicatori
  2. Folosind Matrice 2-D
  3. Folosind Clasa String
  4. Folosind Clasa Vector
  5. Folosind Clasa Array

1. Folosind pointeri

Pointerii sunt reprezentarea simbolică a unei adrese. Cu cuvinte simple, un pointer este ceva care stochează adresa unei variabile în el. În această metodă, o matrice de literali șir este creată de o matrice de pointeri în carefiecare indicator indică un anumit șir.

Exemplu:

C++








// C++ program to demonstrate> // array of strings using> // pointers character array> #include> // Driver code> int> main()> {> >// Initialize array of pointer> >const> char>* colour[4]> >= {>'Blue'>,>'Red'>,>'Orange'>,>'Yellow'> };> >// Printing Strings stored in 2D array> >for> (>int> i = 0; i <4; i++)> >std::cout << colour[i] <<>' '>;> >return> 0;> }>

șir în matrice în c

>

>

Ieșire

Blue Red Orange Yellow>

Explicaţie:

  • Numărul de șiruri este fix, dar nu trebuie să fie. Cele 4 pot fi omise, iar compilatorul va calcula dimensiunea corectă.
  • Aceste șiruri sunt constante și conținutul lor nu poate fi modificat. Deoarece literalele de șir (literal, șirurile citate) există într-o zonă de memorie doar pentru citire, trebuie să specificăm const aici pentru a preveni accesele nedorite care pot bloca programul.

2. Folosind o matrice 2D

O matrice 2-D este cea mai simplă formă a unei matrice multidimensionale în care stochează datele într-o formă tabelară. Această metodă este utilă atunci când lungimea tuturor șirurilor este cunoscută și se dorește o anumită amprentă de memorie. Spațiul pentru șiruri va fi alocat într-un singur bloc

Exemplu:

C++




// C++ program to demonstrate> // array of strings using> // 2D character array> #include> // Driver code> int> main()> {> >// Initialize 2D array> >char> colour[4][10]> >= {>'Blue'>,>'Red'>,>'Orange'>,>'Yellow'> };> >// Printing Strings stored in 2D array> >for> (>int> i = 0; i <4; i++)> >std::cout << colour[i] <<>' '>;> >return> 0;> }>

>

>

obiect la json în java
Ieșire

Blue Red Orange Yellow>

Explicaţie:

  • Atât numărul de șiruri, cât și dimensiunea șirurilor sunt fixe. Cele 4, din nou, pot fi omise, iar dimensiunea adecvată va fi calculată de compilator. A doua dimensiune, totuși, trebuie dată (în acest caz, 10), astfel încât compilatorul să poată alege un aspect de memorie adecvat.
  • Fiecare șir poate fi modificat, dar va ocupa întregul spațiu dat de a doua dimensiune. Fiecare va fi așezat unul lângă celălalt în memorie și nu se poate schimba dimensiunea.
  • Uneori, controlul asupra amprentei memoriei este de dorit, iar acest lucru va aloca o regiune de memorie cu un aspect fix, obișnuit.

3. Folosind clasa String

Șirul STL sau clasa string poate fi folosit pentru a crea o matrice de șiruri mutabile. În această metodă, dimensiunea șirului nu este fixă, iar șirurile pot fi modificate, ceea ce îl face, într-un fel, să fie dinamic în natură. std::string poate fi folosit pentru a crea o matrice de șiruri folosind funcții încorporate.

Exemplu:

C++




este grasime proteica
// C++ program to demonstrate> // array of strings using> // string class> #include> #include> // Driver code> int> main()> {> >// Initialize String Array> >std::string colour[4]> >= {>'Blue'>,>'Red'>,>'Orange'>,>'Yellow'> };> >// Print Strings> >for> (>int> i = 0; i <4; i++)> >std::cout << colour[i] <<>' '>;> }>

>

>

Ieșire

Blue Red Orange Yellow>

Explicaţie:

Matricea este de dimensiune fixă, dar nu trebuie să fie. Din nou, cele 4 de aici pot fi omise, iar compilatorul va determina dimensiunea adecvată a matricei. Șirurile sunt, de asemenea, mutabile, permițându-le să fie schimbate.

4. Folosind clasa vectorială

A vector este o matrice dinamică care își dublează dimensiunea ori de câte ori este adăugat un nou caracter care depășește limita. Vectorul container STL poate fi folosit pentru a aloca dinamic o matrice care poate varia în dimensiune.

Acest lucru este utilizabil numai în C++, deoarece C nu are clase. Rețineți că sintaxa listei de inițializare necesită aici un compilator care acceptă standardul C++ 2011 și, deși este destul de probabil să o facă compilatorul dvs., este ceva de care trebuie să fiți conștient.

Exemplu:

C++


convenția de nume java



// C++ program to demonstrate> // array of strings using> // vector class> #include> #include> #include> // Driver code> int> main()> {> >// Declaring Vector of String type> >// Values can be added here using> >// initializer-list> >// syntax> >std::vector colour{>'Blue'>,>'Red'>,> >'Orange'>};> >// Strings can be added at any time> >// with push_back> >colour.push_back(>'Yellow'>);> >// Print Strings stored in Vector> >for> (>int> i = 0; i std::cout << colour[i] << ' '; }>

>

>

Ieșire

Blue Red Orange Yellow>

Explicaţie:

  • Vectorii sunt matrice dinamice și vă permit să adăugați și să eliminați elemente în orice moment.
  • Orice tip sau clasă poate fi folosit în vectori, dar un vector dat poate conține doar un tip.

5. Utilizarea clasei Array

O matrice este un amestec omogen de date care este stocat continuu în spațiul de memorie. Matricea de containere STL poate fi utilizată pentru a aloca o matrice de dimensiune fixă. Poate fi folosit foarte similar cu un vector, dar dimensiunea este întotdeauna fixă.

Exemplu:

C++




// C++ program to demonstrate> // array of string using STL array> #include> #include> #include> // Driver code> int> main()> {> >// Initialize array> >std::array colour{>'Blue'>,>'Red'>,> >'Orange'>,>'Yellow'>};> >// Printing Strings stored in array> >for> (>int> i = 0; i <4; i++)> >std::cout << colour[i] <<>' '>;> >return> 0;> }>

>

>

Ieșire

Blue Red Orange Yellow>

Acestea nu sunt în niciun caz singurele modalități de a face o colecție de șiruri. C++ oferă mai multe clase de containere, fiecare dintre ele având diverse compromisuri și caracteristici, și toate există pentru a îndeplini cerințele pe care le veți avea în proiectele dvs. Explorează și distrează-te!

hashmap

Concluzie: Dintre toate metodele, Vector pare să fie cea mai bună modalitate de a crea o matrice de șiruri de caractere în C++.

s.