logo

Масив рядків у C++ – 5 різних способів створення

У C++ рядок зазвичай є просто масивом (або посиланням/вказує на) символів, який закінчується символом NULL ‘ ‘. Рядок — це одновимірний масив символів, а масив рядків — це двовимірний масив символівде кожен рядок містить деякий рядок.

Нижче наведено 5 різних способів створення масиву рядків у C++:



  1. Використання Покажчики
  2. Використання Двовимірний масив
  3. Використовуючи Клас рядків
  4. Використовуючи Векторний клас
  5. Використовуючи Клас масиву

1. Використання покажчиків

Покажчики є символічним представленням адреси. Простими словами, вказівник - це те, що зберігає адресу змінної в ньому. У цьому методі масив рядкових літералів створюється масивом покажчиків, у якомукожен покажчик вказує на певний рядок.

приклад:

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

рядок java concat

>

>

Вихід

Blue Red Orange Yellow>

Пояснення:

  • Кількість рядків фіксована, але це не обов’язково. 4 можна опустити, і компілятор обчислить правильний розмір.
  • Ці рядки є константами, і їх вміст не можна змінити. Оскільки рядкові літерали (буквально, рядки в лапках) існують у доступній лише для читання області пам’яті, ми повинні вказати const тут, щоб запобігти небажаному доступу, який може привести до збою програми.

2. Використання 2D масиву

Двовимірний масив є найпростішою формою багатовимірного масиву, у якому він зберігає дані в табличній формі. Цей метод корисний, коли відома довжина всіх рядків і потрібен певний обсяг пам’яті. Місце для рядків буде виділено в одному блоці

приклад:

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

>

>

Вихід

Blue Red Orange Yellow>

Пояснення:

організація та архітектура комп'ютера
  • Як кількість рядків, так і розмір рядків є фіксованими. 4, знову ж таки, можна опустити, а відповідний розмір буде обчислено компілятором. Другий вимір, однак, повинен бути заданий (у цьому випадку 10), щоб компілятор міг вибрати відповідне розташування пам’яті.
  • Кожен рядок можна змінити, але він займатиме весь простір, наданий другим виміром. Кожен з них буде розміщено поруч один з одним у пам’яті та не зможе змінити розмір.
  • Іноді бажано контролювати обсяг пам’яті, і це виділить область пам’яті з фіксованим регулярним макетом.

3. Використання класу String

Рядок STL або клас рядків може використовуватися для створення масиву змінних рядків. У цьому методі розмір рядка не є фіксованим, і рядки можна змінювати, що тим не менш робить його динамічним. std::string можна використовувати для створення масиву рядків за допомогою вбудованих функцій.

приклад:

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

np.log
>

>

Вихід

Blue Red Orange Yellow>

Пояснення:

Масив має фіксований розмір, але це не обов’язково. Знову ж таки, 4 тут можна опустити, і компілятор визначить відповідний розмір масиву. Рядки також є змінними, що дозволяє їх змінювати.

4. Використання векторного класу

А вектор це динамічний масив, розмір якого подвоюється щоразу, коли додається новий символ, що перевищує його обмеження. Контейнерний вектор STL можна використовувати для динамічного розподілу масиву, розмір якого може змінюватися.

Це можна використовувати лише в C++, оскільки C не має класів. Зауважте, що для синтаксису списку ініціалізаторів тут потрібен компілятор, який підтримує стандарт C++ 2011 року, і хоча цілком імовірно, що ваш компілятор його підтримує, про це варто знати.

приклад:

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

винятки java

>

>

Вихід

Blue Red Orange Yellow>

Пояснення:

  • Вектори є динамічними масивами, які дозволяють додавати та видаляти елементи в будь-який час.
  • Будь-який тип або клас можна використовувати у векторах, але даний вектор може містити лише один тип.

5. Використання класу Array

Масив — це однорідна суміш даних, яка постійно зберігається в просторі пам’яті. Контейнерний масив STL можна використовувати для виділення масиву фіксованого розміру. Його можна використовувати дуже подібно до вектора, але розмір завжди фіксований.

приклад:

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

>

>

Вихід

Blue Red Orange Yellow>

Це далеко не єдині способи створення колекції рядків. C++ пропонує кілька класів контейнерів, кожен з яких має різні компроміси та функції, і всі вони існують, щоб задовольнити вимоги, які ви матимете у своїх проектах. Досліджуйте та отримуйте задоволення!

Висновок: З усіх методів Vector здається найкращим способом створення масиву рядків у C++.

робота за комп'ютером

с.