Вектор у библиотеци стандардних шаблона Ц ++ (СТЛ) са примером

Преглед садржаја:

Anonim

Шта је Ц ++ вектор?

Ц ++ ВЕЦТОР је динамички низ способна да се промене величине аутоматски. До промене величине долази након додавања или брисања елемента из вектора. Контејнером се аутоматски рукује складиштем. Елементи вектора чувају се у непрекидном складишту. Ово омогућава програмерима Ц ++ да приступе и пређу векторске елементе помоћу итератора.

Уметање нових података у вектор врши се на његовом крају. Ово захтева различито време. Уклањање елемента из вектора траје константно. Разлог је тај што нема потребе за променом величине вектора. Уметање или брисање елемента на почетку вектора траје линеарно.

У овом водичу за Ц ++ научићете:

  • Шта је Ц ++ вектор?
  • Када користити вектор?
  • Како иницијализовати векторе у Ц ++
  • Итераторе
  • Модификатори
  • Пример 1
  • Пример 2
  • Капацитет
  • Пример 3

Када користити вектор?

Ц ++ вектор треба користити у следећим околностима:

  • Када се ради о елементима података који се доследно мењају.
  • Ако величина података није позната пре почетка, вектор неће захтевати да подесите максималну величину контејнера.

Како иницијализовати векторе у Ц ++

Синтакса вектора у Ц ++ је:

vector  name (items)
  • Као што је горе приказано, започињемо са кључном речи вецтор.
  • Тип података је тип података елемената који се чувају у вектору.
  • Име је име вектора или елемената података.
  • Ставке означавају број елемената за податке вектора. Овај параметар није обавезан.

Итераторе

Сврха итератора је да нам помогну да приступимо елементима који су ускладиштени у вектору. То је објекат који ради попут показивача. Ево уобичајених итератора које подржавају вектори Ц ++:

  • вецтор :: бегин (): даје итератор који показује на први елемент вектора.
  • вецтор :: енд (): даје итератор који показује на прошли елемент вектора.
  • вецтор :: цбегин (): исто је што и вецтор :: бегин (), али нема могућност модификовања елемената.
  • вецтор :: ценд (): исти је као вецтор :: енд (), али не може мењати векторске елементе.

Модификатори

Модификатори се користе за промену значења наведеног типа података. Ево уобичајених модификатора у Ц ++:

  • вецтор :: пусх_бацк (): Овај модификатор потискује елементе са задње стране.
  • вецтор :: инсерт (): За уметање нових предмета у вектор на одређеној локацији.
  • вецтор :: поп_бацк (): Овај модификатор уклања векторске елементе са задње стране.
  • вецтор :: ерасе (): Користи се за уклањање низа елемената са назначене локације.
  • вецтор :: цлеар (): Уклања све векторске елементе.

Пример 1

#include #include using namespace std;int main(){vector nums;for (int a = 1; a <= 5; a++)nums.push_back(a);cout << "Output from begin and end: ";for (auto a = nums.begin(); a != nums.end(); ++a)cout << *a << " ";cout << "\nOutput from cbegin and cend: ";for (auto a = nums.cbegin(); a != nums.cend(); ++a)cout << *a << " ";return 0;}

Излаз:

Ево снимка екрана кода:

Објашњење кода:

  1. Укључите датотеку заглавља иостреам у наш код. Омогућиће нам читање са конзоле и писање на њу.
  2. Укључите векторску датотеку заглавља у наш код. Омогућиће нам рад са векторима на Ц ++.
  3. Укључите стд простор имена како бисте користили његове класе и функције без позива.
  4. Позовите функцију маин () унутар које треба додати логику програма.
  5. Ознака {означава почетак тела главне () функције.
  6. Прогласите вектор назван нумс за чување скупа целих бројева.
  7. Направите фор петљу која ће нам помоћи да прелазимо преко вектора. Променљива ће нам помоћи да прелазимо преко векторских елемената, од 1. до 5. елемента.
  8. Гурните елементе у векторски број са задње стране. За сваку итерацију, ово ће додати тренутну вредност променљиве а у вектор, која је од 1 до 5.
  9. Одштампајте мало текста на конзоли
  10. Користите променљиву итератора а за прелазак преко елемената векторских бројева од почетка до елемента „прошли крај“. Имајте на уму да користимо итераторе вецтор :: бегин () и вецтор :: енд ().
  11. Испишите вредности на које указује променљива итератора ан на конзоли за сваку итерацију.
  12. Одштампајте мало текста на конзоли. \ Н је нови знак у линији, померајући курсор у нови ред за штампање од тамо.
  13. Користите променљиву итератора за прелазак преко елемената векторских бројева од почетка до краја-крај елемента. Имајте на уму да користимо итераторе вецтор :: цбегин () и вецтор :: ценд ().
  14. Испишите вредности на које указује променљива итератора а на конзоли за сваку итерацију.
  15. Главна функција треба да врати вредност ако се програм успешно изводи.
  16. Крај тела главне () функције.

Пример 2

#include #include using namespace std;int main(){vector nums;nums.assign(5, 1);cout << "Vector contents: ";for (int a = 0; a < nums.size(); a++)cout << nums[a] << " ";nums.push_back(2);int n = nums.size();cout << "\nLast element: " << nums[n - 1];nums.pop_back();cout << "\nVector contents: ";for (int a = 0; a < nums.size(); a++)cout << nums[a] << " ";nums.insert(nums.begin(), 7);cout << "\nFirst element: " << nums[0];nums.clear();cout << "\nSize after clear(): " << nums.size();}

Излаз:

Ево снимка екрана кода:

Објашњење кода:

  1. Укључите иостреам датотеку заглавља у наш код да бисте користили његове функције.
  2. Укључите векторску датотеку заглавља у наш код да бисте користили његове функције.
  3. Укључите стд простор имена да бисте користили његове класе без позивања.
  4. Позовите главну () функцију. Логику програма треба додати унутар његовог тела.
  5. Почетак тела главне () функције.
  6. Прогласите вектор под називом нумс за чување неких целобројних вредности.
  7. Спремите 5 елемената у векторске бројеве. Свака са вредношћу 1.
  8. Одштампајте мало текста на конзоли
  9. Користите променљиву итератора а за прелазак преко елемената векторских бројева.
  10. Испишите вредности векторских бројева на конзоли за сваку итерацију.
  11. Додајте вредност 2 на крај векторских бројева.
  12. Прогласите целобројну променљиву н за чување величине векторских бројева.
  13. Одштампајте последњу вредност векторских бројева заједно са осталим текстом. Требало би да врати 2.
  14. Уклоните последњи елемент из векторских бројева. 2 ће бити уклоњена.
  15. Испис текста на конзоли. \ Н Премешта курсор у нови ред да би тамо одштампао текст.
  16. Користите променљиву итератора а за прелазак преко елемената векторских бројева.
  17. Испишите вредности векторских бројева на конзоли за сваку итерацију.
  18. Уметните вредност 7 на почетак векторских бројева.
  19. Одштампајте прву вредност векторских бројева уз други текст. Требало би да се врати 7.
  20. Избришите све елементе из векторских бројева.
  21. Одштампајте величину вектора нум уз други текст након брисања свих садржаја. Требало би да врати 0.
  22. Крај тела главне () функције.

Капацитет

Користите следеће функције за одређивање капацитета вектора:

  • Величина () - Враћа број ставки у вектору.
  • Мак_сизе () - Враћа највећи број предмета које вектор може да ускладишти.
  • Капацитет () - Враћа количину простора за складиштење додељен вектору.
  • Ресизе () - Величину контејнера садржи н ставки. Ако је тренутна величина вектора већа од н, задње ставке ће бити уклоњене из вектора. Ако је тренутна величина вектора мања од н, на полеђини вектора биће додате додатне ставке.
  • Емпти () -и т враћа труе ако је вектор празан, иначе враћа фалсе.

Пример 3

#include #include using namespace std;int main() {vector vector1;for (int x = 1; x <= 10; x++)vector1.push_back(x);cout << "Vector size: " << vector1.size()<< endl;cout << "Vector capacity: " << vector1.capacity() << endl;cout << "Maximum size of vector: " << vector1.max_size()<< endl;vector1.resize(5);cout << "Vector size after resizing: " << vector1.size() << endl;if (vector1.empty() == false)cout << "Vector is not empty"<

Излаз:

Ево снимка екрана кода:

Објашњење кода:

  1. Укључите иостреам датотеку заглавља у наш код да бисте користили његову функцију.
  2. Укључите векторску датотеку заглавља у наш код да бисте користили његове функције.
  3. Укључите стд простор имена у наш код да бисте користили његове класе без позивања.
  4. Позовите главну () функцију. Логику програма треба додати у тело ове функције.
  5. Направите вектор под називом вецтор1 за чување целих бројева.
  6. Користите фор петљу за креирање променљиве к са вредностима од 1 до 10.
  7. Гурните вредности променљиве к у вектор.
  8. Одштампајте величину вектора заједно са осталим текстом на конзоли.
  9. Одштампајте капацитет вектора заједно са осталим текстом на конзоли.
  10. Одштампајте максималан број предмета које вектор може да садржи уз други текст на конзоли.
  11. Промените величину вектора да садржи само 5 елемената.
  12. Одштампајте нову величину вектора уз други текст.
  13. Проверите да ли вектор није празан.
  14. Испис текста на конзоли ако вектор није празан.
  15. Користите изјаву елсе да бисте навели шта да радите ако је вектор празан.
  16. Текст за испис на конзоли ако је вектор празан.
  17. Програм мора вратити вредност након успешног завршетка.
  18. Крај тела главне () функције.

Резиме:

  • Ц ++ вектор је динамички низ способан да аутоматски мења величину кад се елемент дода или избрише из њега.
  • Складиште за вектор аутоматски обрађује контејнер.
  • Елементи вектора се чувају у непрекидном складишту како би им се приступило и прешло помоћу итератора.
  • Уметање нових података у вектор врши се на његовом крају.
  • Уметање података у вектор захтева различито време.
  • Уклањање елемента из вектора траје константно.
  • Уметање или брисање елемента на почетку траје линеарно.
  • Вектори треба да се користе када се ради са елементима података који се доследно мењају.
  • Такође, можете користити векторе ако величина података није позната пре почетка.