logo

Tablica ciągów w C++ – 5 różnych sposobów tworzenia

W C++ ciąg znaków jest zwykle po prostu tablicą (lub odwołaniem/wskazówkiem) znaków zakończonym znakiem NULL „ „. Ciąg znaków to jednowymiarowa tablica znaków, a tablica ciągów to dwuwymiarowa tablica znakówgdzie każdy wiersz zawiera jakiś ciąg.

Poniżej znajduje się 5 różnych sposobów tworzenia tablicy ciągów w C++:



  1. Za pomocą Wskaźniki
  2. Za pomocą Tablica 2-D
  3. Używając Klasa ciągów
  4. Używając Klasa wektorowa
  5. Używając Klasa tablicowa

1. Używanie wskaźników

Wskaźniki są symboliczną reprezentacją adresu. Krótko mówiąc, wskaźnik to coś, co przechowuje w sobie adres zmiennej. W tej metodzie tablica literałów łańcuchowych jest tworzona przez tablicę wskaźników, w którychkażdy wskaźnik wskazuje na konkretny ciąg.

Przykład:

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

wzór projektowy singleton Java

>

>

Wyjście

Blue Red Orange Yellow>

Wyjaśnienie:

  • Liczba ciągów jest stała, ale nie musi. 4 można pominąć, a kompilator obliczy prawidłowy rozmiar.
  • Ciągi te są stałymi i nie można zmienić ich zawartości. Ponieważ literały łańcuchowe (dosłownie cytowane ciągi znaków) istnieją w obszarze pamięci przeznaczonym tylko do odczytu, musimy tutaj podać const, aby zapobiec niepożądanym dostępom, które mogą spowodować awarię programu.

2. Korzystanie z tablicy 2D

Tablica 2-D jest najprostszą formą tablicy wielowymiarowej, w której przechowuje dane w formie tabelarycznej. Ta metoda jest przydatna, gdy znana jest długość wszystkich ciągów znaków i wymagane jest określone wykorzystanie pamięci. Miejsce na ciągi znaków zostanie przydzielone w jednym bloku

Przykład:

sztuczna inteligencja i inteligentni agenci

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

>

>

Wyjście

Blue Red Orange Yellow>

Wyjaśnienie:

  • Zarówno liczba ciągów, jak i ich rozmiar są stałe. 4 ponownie można pominąć, a odpowiedni rozmiar zostanie obliczony przez kompilator. Trzeba jednak podać drugi wymiar (w tym przypadku 10), aby kompilator mógł wybrać odpowiedni układ pamięci.
  • Każdy ciąg można modyfikować, ale zajmie on całą przestrzeń określoną przez drugi wymiar. Każdy z nich zostanie ułożony obok siebie w pamięci i nie będzie można zmienić jego rozmiaru.
  • Czasami pożądana jest kontrola nad zajmowaną pamięcią, co spowoduje alokację obszaru pamięci o stałym, regularnym układzie.

3. Korzystanie z klasy String

Ciąg STL lub klasa stringów może służyć do tworzenia tablicy modyfikowalnych ciągów znaków. W tej metodzie rozmiar struny nie jest ustalony, a struny można zmieniać, co mimo wszystko nadaje jej dynamiczny charakter std::string można użyć do utworzenia tablicy ciągów przy użyciu wbudowanych funkcji.

Przykład:

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

>

>

struktury wykorzystujące tablice w c
Wyjście

Blue Red Orange Yellow>

Wyjaśnienie:

Tablica ma stały rozmiar, ale nie musi. Ponownie, 4 tutaj można pominąć, a kompilator określi odpowiedni rozmiar tablicy. Ciągi znaków są również modyfikowalne, co pozwala na ich zmianę.

4. Korzystanie z klasy wektorów

A wektor to dynamiczna tablica, która podwaja swój rozmiar za każdym razem, gdy dodawany jest nowy znak przekraczający limit. Wektor kontenera STL może służyć do dynamicznego przydzielania tablicy, która może różnić się rozmiarem.

Można tego używać tylko w C++, ponieważ C nie ma klas. Należy zauważyć, że składnia listy inicjatorów wymaga kompilatora obsługującego standard C++ z 2011 r. i chociaż jest całkiem prawdopodobne, że Twój kompilator tak robi, warto o tym pamiętać.

Przykład:

C++


wielkość łyżeczki



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

>

>

Wyjście

Blue Red Orange Yellow>

Wyjaśnienie:

  • Wektory to tablice dynamiczne, które umożliwiają dodawanie i usuwanie elementów w dowolnym momencie.
  • W wektorach można używać dowolnego typu lub klasy, ale dany wektor może zawierać tylko jeden typ.

5. Korzystanie z klasy Array

Tablica to jednorodna mieszanina danych przechowywanych w sposób ciągły w przestrzeni pamięci. Tablicy kontenerów STL można użyć do alokacji tablicy o stałym rozmiarze. Można go używać bardzo podobnie do wektora, ale jego rozmiar jest zawsze stały.

Przykład:

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

fabryczny wzór projektowy
>

>

Wyjście

Blue Red Orange Yellow>

Nie są to jedyne sposoby na utworzenie kolekcji ciągów znaków. C++ oferuje kilka klas kontenerów, z których każda ma różne kompromisy i funkcje, a wszystkie istnieją po to, aby spełnić wymagania, które będziesz mieć w swoich projektach. Odkrywaj i baw się dobrze!

Wniosek: Ze wszystkich metod Vector wydaje się być najlepszym sposobem na utworzenie tablicy ciągów znaków w C++.

S.