string array c implementation representation with examples
Řetězcové pole v C ++ je pole řetězců. V tomto kurzu se budeme zabývat podrobnostmi reprezentace a implementace řetězcových polí v C ++:
V našich dřívějších výukových programech jsme viděli pole v C ++. Pole nám umožňují deklarovat datové prvky různých typů. Zatímco pole všech číselných datových typů jsou v provozu a implementaci identická a pole s řetězcovým datovým typem se liší.
jak spustit soubory .bin
V C ++ může být řetězec reprezentován jako pole znaků nebo pomocí třídy řetězce, která je podporována v C ++. Každý řetězec nebo prvek pole je ukončen prázdným znakem. Reprezentující řetězce pomocí pole znaků jsou přímo převzaty z jazyka „C“, protože v jazyce C není žádný typ řetězce.
=> Klikněte sem a získejte bezplatný kurz C ++.
Co se naučíte:
Implementace řetězcových polí
V C ++ lze řetězce reprezentovat třemi způsoby.
- Použití dvourozměrných polí znaků: Tato reprezentace používá dvourozměrná pole, kde každý prvek je průsečíkem čísla řádku a sloupce a představuje řetězec
- Použití řetězcového klíčového slova: Můžeme také použít klíčové slovo řetězce C ++ k deklaraci a definování řetězcových polí.
- Použití vektorů STL: Můžeme použít vektory STL, kde každý prvek vektoru je řetězec.
Nyní pojďme diskutovat o každé z výše uvedených metod a prohlédněte si také příklady programování pro každou reprezentaci.
Použití dvourozměrných polí znaků
Řetězcová pole nebo pole řetězců lze reprezentovat pomocí speciální formy dvourozměrných polí. V této reprezentaci používáme dvourozměrné pole znaků typu k reprezentaci řetězce.
První dimenze určuje počet prvků, tj. Řetězce v tomto poli a druhá dimenze určuje maximální délku každého prvku v poli.
Můžeme tedy použít obecnou reprezentaci, jak je znázorněno níže.
char “stringarrayname” (“number of strings”) (“maximum length of the string”)
Například,zvažte následující prohlášení:
char string_array(10) (20);
Výše uvedená deklarace deklaruje pole řetězců s názvem „string_array“, které má 10 prvků a délka každého prvku není větší než 20.
Můžeme deklarovat a inicializovat pole zvířat pomocí řetězců následujícím způsobem:
char animals (5) (10) = {“Lion”, “Tiger”, “Deer”, “Ape”, “Kangaroo”};
Podívejme se na příklad programování využívající koncept dvourozměrných polí znaků, abychom lépe porozuměli konceptu.
#include using namespace std; int main() { char strArray(5) (6) = {'one', 'two', 'three', 'four', 'five'}; cout<<'String array is as follows:'< Výstup:

Ve výše uvedeném programu jsme deklarovali pole řetězců s názvem strArray o velikosti 5 s maximální délkou každého prvku jako 10. V programu inicializujeme smyčku for k zobrazení každého prvku pole. Všimněte si, že k zobrazení prvku stačí získat přístup k poli pomocí první dimenze.
Snadný přístup k prvkům je jednou z hlavních výhod 2-D polí. Programování je opravdu jednoduché.
Hlavní nevýhodou tohoto typu reprezentace je, že jak rozměry pole, tj. Počet prvků, tak maximální délka prvku jsou pevné a nelze je změnit, jak chceme.
Zadruhé zadáme maximální délku každého prvku jako druhou dimenzi během deklarace pole. Pokud je délka řetězce zadána jako 100 a máme všechny prvky, které jsou menší, pak je paměť zbytečná.
Pomocí řetězce Klíčové slovo
V tomto používáme klíčové slovo ‘řetězec’ v C ++ k deklaraci pole řetězců. Na rozdíl od polí znaků zde máme pouze 1D pole. Jediný rozměr určuje počet řetězců v poli.
Obecná syntaxe pro deklaraci pole řetězců pomocí klíčového slova string je uvedena níže:
string “array name” (“number of strings”);
Všimněte si, že zde neurčujeme maximální délku řetězce. To znamená, že na délku prvků pole neexistuje žádné omezení.
Jako příklad můžeme deklarovat pole názvů barev následujícím způsobem.
string colors(5);
Toto pole můžeme dále inicializovat, jak je znázorněno níže:
string colors(5) = {“Red”, “Green”, “Blue”, “Orange”, “Brown”};
Níže je uveden program C ++, který rozumí klíčovému slovu řetězce a jeho použití v poli řetězců.
#include using namespace std; int main() { string numArray(5) = {'one', 'two', 'three', 'four', 'five'}; cout<<'String array is as follows:'< Výstup:

Upravili jsme náš předchozí program pole znaků a demonstrovali použití klíčového slova řetězce. Výstup programu je stejný, ale způsob jeho dosažení se liší, protože pomocí klíčového slova string definujeme pole řetězců.
Všimněte si, že pole řetězců používající klíčové slovo řetězec má tu výhodu, že nemáme žádná omezení délky řetězců v poli. Protože zde není žádné omezení, neztrácíme také paměťový prostor.
Nevýhodou je, že toto pole má pevnou velikost. Nejprve musíme deklarovat velikost pole.
Používání vektorů STL
Můžeme také použít vektory STL pro deklaraci a definování dynamických polí. Abychom tedy definovali pole řetězců, můžeme mít vektor STL typu řetězec.
Tato deklarace řady řetězců pomocí vektoru je uvedena níže:
vector “stringarray_Name”;
S odkazem na výše uvedenou deklaraci můžeme deklarovat vektorové „předměty“ následujícím způsobem:
vector mysubjects;
Všimněte si, že můžeme vektoru přiřadit prvky pomocí metody „push_back“ nebo jiných vektorových metod STL.
Níže je uveden příklad programování používající C ++ k demonstraci použití vektoru STL k reprezentaci pole řetězců.
#include #include using namespace std; int main() { vector myNumbers; myNumbers.push_back('one'); myNumbers.push_back('two'); myNumbers.push_back('three'); myNumbers.push_back('four'); myNumbers.push_back('five'); cout<<'String array is as follows:'< Výstup:

Ve výše uvedeném programu máme STL vektor myNumbers typového řetězce. Dále přidáme prvky do tohoto vektoru pomocí metody push_back a poté zobrazíme každý z prvků vektoru.
Pokud vidíme celou práci vektoru STL a pole řetězců, vidíme, že v tomto případě nemáme omezení počtu prvků v poli ani maximální délku každého prvku. Vidíme, že pole řetězců využívajících vektory je zcela dynamické a lze jej dynamicky zmenšovat nebo zvětšovat.
Jak vybrat reprezentaci, která se má použít?
Nyní, když jsme viděli všechny tři reprezentace řetězcových polí, můžeme dojít k závěru, že ze všech tří reprezentací je vektorová reprezentace nejlepší, protože má dynamickou povahu.
Závisí to na účelu a požadavcích řetězcového pole. Když máme požadavek, že potřebujeme řetězcové pole pevné velikosti a známe přesná data, která se dostanou do řetězcového pole, můžeme jít na znakové pole nebo řetězcovou reprezentaci.
Když chceme, aby se řetězcové pole dynamicky zvětšovalo nebo zmenšovalo, můžeme se uchýlit k vektorové reprezentaci, protože nám pomůže vyvinout programy dynamickou změnou pole.
Závěr
Řetězcová pole jsou speciální pole, která mají data jako řetězce. To znamená, že každý prvek pole je řetězec zakončený nulovým znakem.
jak mohu otevřít soubor json?
Podrobně jsme diskutovali tři reprezentace řetězcového pole spolu s jejich klady a zápory. V závislosti na našich požadavcích; můžeme použít libovolnou reprezentaci řetězcového pole, která vyhovuje naší implementaci.
V našich dalších výukách budeme pokračovat v podrobném prozkoumávání řetězců C ++ a funkcí C ++.
=> Přečtěte si sérii školení Easy C ++.
Doporučené čtení
- Výukový program Java Array Length s příklady kódu
- Výukový program Java String s funkcí String Buffer a String Builder
- C # String Tutorial - Metody řetězců s příklady kódu
- Funkce řetězce Python
- C ++ pole s příklady
- Řetězce v C ++ s příklady
- Generátor náhodných čísel C # a generátor náhodných řetězců C # s příklady kódu
- Třídění haldy v C ++ s příklady