logo

Pole reťazcov v C++ – 5 rôznych spôsobov vytvárania

V C++ je reťazec zvyčajne len pole (alebo odkaz/ukazuje na) znakov, ktoré končí znakom NULL ‘ ‘. Reťazec je 1-rozmerné pole znakov a pole reťazcov je 2-rozmerné pole znakovkde každý riadok obsahuje nejaký reťazec.

Nižšie je uvedených 5 rôznych spôsobov, ako vytvoriť pole reťazcov v C++:



  1. Použitím Ukazovatele
  2. Použitím 2-D pole
  3. Pomocou String Class
  4. Pomocou Vektorová trieda
  5. Pomocou Trieda Array

1. Používanie ukazovateľov

Ukazovatele sú symbolickým znázornením adresy. Jednoducho povedané, ukazovateľ je niečo, čo v ňom ukladá adresu premennej. Pri tejto metóde je pole reťazcových literálov vytvorené poľom ukazovateľov, v ktorýchkaždý ukazovateľ ukazuje na konkrétny reťazec.

Príklad:

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;> }>

celé číslo na reťazec v jazyku Java

>

>

Výkon

Blue Red Orange Yellow>

Vysvetlenie:

  • Počet reťazcov je pevný, ale nemusí byť. 4 možno vynechať a kompilátor vypočíta správnu veľkosť.
  • Tieto reťazce sú konštanty a ich obsah nemožno meniť. Pretože reťazcové literály (doslova reťazce v úvodzovkách) existujú v oblasti pamäte určenej len na čítanie, musíme tu zadať const, aby sme zabránili nechceným prístupom, ktoré môžu zlyhať program.

2. Použitie 2D poľa

2-D pole je najjednoduchšia forma viacrozmerného poľa, v ktorom sú uložené údaje v tabuľkovej forme. Táto metóda je užitočná, keď je známa dĺžka všetkých reťazcov a požaduje sa konkrétna pamäťová stopa. Priestor pre reťazce bude pridelený v jednom bloku

Príklad:

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;> }>

>

>

Madhubala
Výkon

Blue Red Orange Yellow>

Vysvetlenie:

  • Počet reťazcov aj veľkosť reťazcov sú pevne dané. 4 možno opäť vynechať a vhodnú veľkosť vypočíta kompilátor. Druhý rozmer však musí byť daný (v tomto prípade 10), aby si kompilátor mohol zvoliť vhodné rozloženie pamäte.
  • Každý reťazec je možné upraviť, ale zaberie celý priestor daný druhým rozmerom. Každá z nich bude v pamäti rozložená vedľa seba a nemožno zmeniť veľkosť.
  • Niekedy je potrebná kontrola nad pamäťovou stopou, čo pridelí oblasť pamäte s pevným, pravidelným rozložením.

3. Použitie triedy String

Reťazec STL resp strunová trieda možno použiť na vytvorenie poľa meniteľných reťazcov. Pri tejto metóde nie je veľkosť strún pevne stanovená a struny je možné meniť, čím je však v podstate dynamická. std::string možno použiť na vytvorenie poľa reťazcov pomocou vstavaných funkcií.

Príklad:

C++




čo je rom
// 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] <<>' '>;> }>

>

>

Výkon

Blue Red Orange Yellow>

Vysvetlenie:

Pole má pevnú veľkosť, ale nemusí. Opäť tu 4 možno vynechať a kompilátor určí vhodnú veľkosť poľa. Struny sú tiež meniteľné, čo umožňuje ich výmenu.

4. Použitie triedy vector

A vektor je dynamické pole, ktoré zdvojnásobí svoju veľkosť vždy, keď sa pridá nový znak, ktorý prekročí jeho limit. Vektor kontajnera STL možno použiť na dynamickú alokáciu poľa, ktoré sa môže líšiť veľkosťou.

Toto je použiteľné iba v C++, keďže C nemá triedy. Všimnite si, že syntax zoznamu inicializátorov si vyžaduje kompilátor, ktorý podporuje štandard 2011 C++, a aj keď je dosť pravdepodobné, že váš kompilátor áno, je potrebné si to uvedomiť.

Príklad:

C++


Java porovnateľné rozhranie



// 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] << ' '; }>

>

>

Výkon

Blue Red Orange Yellow>

Vysvetlenie:

  • Vektory sú dynamické polia a umožňujú vám kedykoľvek pridávať a odstraňovať položky.
  • Akýkoľvek typ alebo trieda môže byť použitá vo vektoroch, ale daný vektor môže obsahovať iba jeden typ.

5. Použitie triedy Array

Pole je homogénna zmes údajov, ktoré sú nepretržite uložené v pamäťovom priestore. Pole kontajnerov STL možno použiť na pridelenie poľa s pevnou veľkosťou. Dá sa použiť veľmi podobne ako vektor, ale veľkosť je vždy pevná.

Príklad:

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;> }>

>

>

Výkon

Blue Red Orange Yellow>

V žiadnom prípade to nie sú jediné spôsoby, ako vytvoriť kolekciu reťazcov. C++ ponúka niekoľko tried kontajnerov, z ktorých každá má rôzne kompromisy a funkcie a všetky existujú na splnenie požiadaviek, ktoré budete mať vo svojich projektoch. Preskúmajte a bavte sa!

mergesort java

záver: Zo všetkých metód sa zdá, že Vector je najlepším spôsobom na vytvorenie poľa reťazcov v C++.

s.