logo

Stygų masyvas C++ – 5 skirtingi kūrimo būdai

C++ kalboje eilutė paprastai yra tik simbolių masyvas (arba nuoroda / nurodo į juos), kuris baigiasi simboliu NULL. ‘. Eilutė yra 1 dimensijos simbolių masyvas, o eilučių masyvas yra dvimatis simbolių masyvaskur kiekvienoje eilutėje yra tam tikra eilutė.

Žemiau yra 5 skirtingi būdai, kaip sukurti stygų masyvą C++:

  1. Naudojant Rodyklės
  2. Naudojant 2-D masyvas
  3. Naudojant Styginių klasė
  4. Naudojant Vektorinė klasė
  5. Naudojant Masyvo klasė

1. Rodyklės naudojimas

Rodyklės yra simbolinis adreso vaizdas. Paprastais žodžiais tariant, rodyklė yra kažkas, kas jame saugo kintamojo adresą. Taikant šį metodą, eilučių literalų masyvas sukuriamas rodyklių masyve, kuriamekiekviena rodyklė nurodo tam tikrą eilutę.



Pavyzdys:

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

alisa manyonok

>

>

Išvestis

Blue Red Orange Yellow>

Paaiškinimas:

  • Eilučių skaičius yra fiksuotas, bet nebūtinai. 4 gali būti praleistas, o kompiliatorius apskaičiuos teisingą dydį.
  • Šios eilutės yra konstantos ir jų turinio keisti negalima. Kadangi eilučių literalai (pažodžiui, cituojamos eilutės) egzistuoja tik skaitomoje atminties srityje, čia turime nurodyti const, kad išvengtume nepageidaujamų priėjimų, dėl kurių programa gali sugesti.

2. 2D masyvo naudojimas

2-D masyvas yra paprasčiausia daugiamačio masyvo forma, kurioje duomenys saugomi lentelės forma. Šis metodas yra naudingas, kai žinomas visų eilučių ilgis ir norima konkretaus atminties ploto. Vieta stygoms bus skirta viename bloke

Pavyzdys:

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

>

>

Išvestis

c# pamoka
Blue Red Orange Yellow>

Paaiškinimas:

  • Fiksuotas ir eilučių skaičius, ir stygų dydis. Vėlgi, 4 gali būti palikti, o atitinkamą dydį apskaičiuos kompiliatorius. Tačiau turi būti pateiktas antrasis matmuo (šiuo atveju 10), kad kompiliatorius galėtų pasirinkti tinkamą atminties išdėstymą.
  • Kiekvieną eilutę galima modifikuoti, tačiau ji užims visą vietą, kurią suteikia antrasis matmuo. Kiekvienas iš jų bus išdėstytas atmintyje vienas šalia kito ir negalės keisti dydžio.
  • Kartais pageidautina valdyti atminties pėdsaką, o tai paskirs atminties sritį su fiksuotu, įprastu išdėstymu.

3. Styginių klasės naudojimas

STL eilutė arba stygų klasė gali būti naudojamas kuriant kintamų eilučių masyvą. Taikant šį metodą, eilutės dydis nėra fiksuotas, o eilutės gali būti keičiamos, todėl ji kažkaip tampa dinamiška. std::string gali būti naudojamas kuriant eilučių masyvą naudojant įmontuotas funkcijas.

Pavyzdys:

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

tkinter rėmas

>

>

Išvestis

Blue Red Orange Yellow>

Paaiškinimas:

Masyvas yra fiksuoto dydžio, bet nebūtinai. Vėlgi, 4 čia gali būti praleisti, o kompiliatorius nustatys tinkamą masyvo dydį. Stygos taip pat yra keičiamos, todėl jas galima keisti.

4. Naudojant vektorių klasę

A vektorius yra dinaminis masyvas, kurio dydis padvigubinamas, kai pridedamas naujas simbolis, viršijantis ribą. STL konteinerio vektorius gali būti naudojamas dinamiškai paskirstyti masyvą, kurio dydis gali skirtis.

Tai galima naudoti tik C++, nes C neturi klasių. Atminkite, kad inicijavimo sąrašo sintaksė reikalauja kompiliatoriaus, palaikančio 2011 m. C++ standartą, ir nors gana tikėtina, kad jūsų kompiliatorius tai daro, verta tai žinoti.

Pavyzdys:

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

>

>

Išvestis

Blue Red Orange Yellow>

Paaiškinimas:

išvalyti npm talpyklą
  • Vektoriai yra dinamiški masyvai, leidžiantys bet kada pridėti ir pašalinti elementus.
  • Vektoriuose gali būti naudojamas bet koks tipas ar klasė, tačiau tam tikras vektorius gali turėti tik vieną tipą.

5. Masyvo klasės naudojimas

Masyvas yra vienalytis duomenų mišinys, nuolat saugomas atminties erdvėje. STL konteinerių masyvas gali būti naudojamas fiksuoto dydžio masyvui priskirti. Jis gali būti naudojamas labai panašiai kaip vektorius, tačiau dydis visada yra fiksuotas.

Pavyzdys:

C++




base64 javascript dekodavimas
// 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;> }>

>

>

Išvestis

Blue Red Orange Yellow>

Tai jokiu būdu nėra vieninteliai būdai sukurti stygų kolekciją. C++ siūlo keletą konteinerių klasių, kurių kiekviena turi įvairių kompromisų ir funkcijų, ir visos jos egzistuoja, kad atitiktų reikalavimus, kuriuos turėsite savo projektuose. Tyrinėkite ir linksminkitės!

Išvada: Iš visų metodų, vektorius, atrodo, yra geriausias būdas sukurti stygų masyvą C++.

s.