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 caractere unde 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++:
- Folosind Indicatori
- Folosind Matrice 2-D
- Folosind Clasa String
- Folosind Clasa Vector
- 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 care fiecare 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;> }> |
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;> }> |
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++
// 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++
// 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!
Concluzie: Dintre toate metodele, Vector pare să fie cea mai bună modalitate de a crea o matrice de șiruri de caractere în C++.
s.