Вектори такі ж, як і динамічні масиви, з можливістю автоматично змінювати розмір, коли елемент вставляється або видаляється, а їх зберігання автоматично обробляється контейнером.
Функція empty() використовується для перевірки того, чи порожній векторний контейнер.
Синтаксис:
vectorname .empty() Parameters : No parameters are passed. Returns : True, if vector is empty False, Otherwise>
приклади:
Input : myvector = 1, 2, 3, 4, 5 myvector.empty(); Output : False Input : myvector = {} myvector.empty(); Output : True>
Складність часу – Константа O(1)
Помилки та винятки
1. Він не має гарантії відсутності винятків.
2. Показує помилку, коли передається параметр.
колекція java
CPP
// CPP program to illustrate> // Implementation of empty() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >мійвектор{};> > if> (myvector.empty())> > {> > cout <<> 'True'> ;> > }> > else> {> > cout <<> 'False'> ;> > }> > return> 0;> }> |
>
>Вихід
True>
застосування:
Дано список цілих чисел, знайдіть суму всіх цілих чисел.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Алгоритм
1. Перевірте, чи вектор порожній, якщо ні, додайте елемент back до змінної, ініціалізованої як 0, і витягніть елемент back.
2. Повторюйте цей крок, доки вектор не стане порожнім.
3. Вивести кінцеве значення змінної.
CPP
функції java8
// CPP program to illustrate> // Application of empty() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >мійвектор{ 1, 5, 6, 3, 9, 2 };> > while> (!myvector.empty())> > {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Вихід
26>вектор::розмір()
Функція size() використовується для повернення розміру векторного контейнера або кількості елементів у векторному контейнері.
Синтаксис:
vectorname .size() Parameters : No parameters are passed. Returns : Number of elements in the container.>
приклади:
Input : myvector = 1, 2, 3, 4, 5 myvector.size(); Output : 5 Input : myvector = {} myvector.size(); Output : 0>
Часова складність – Константа O(1)
Помилки та винятки
1. Він не має гарантії відсутності винятків.
2. Показує помилку, коли передається параметр.
CPP
// CPP program to illustrate> // Implementation of size() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >мійвектор{ 1, 2, 3, 4, 5 };> > cout << myvector.size();> > return> 0;> }> |
>
>Вихід
5>
Чому порожній() надає перевагу над size()
Функція empty() часто вважається кращою над функцією size() через деякі з цих моментів-
- функція empty(). не використовує жодних операторів порівняння , що зручніше у використанні
- функція empty(). реалізується в постійному часі , незалежно від типу контейнера, тоді як деякі реалізації функції size() вимагають O(n) складності часу, наприклад list::size().
застосування:
Дано список цілих чисел, знайдіть суму всіх цілих чисел.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
Алгоритм
1. Перевірте, чи розмір вектора дорівнює 0, якщо ні, додайте елемент back до змінної, ініціалізованої як 0, і витягніть елемент back.
2. Повторюйте цей крок, доки розмір вектора не стане рівним 0.
3. Вивести кінцеве значення змінної.
CPP
// CPP program to illustrate> // Application of size() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >мійвектор{ 1, 5, 6, 3, 9, 2 };> > while> (myvector.size()>0) {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>Вихід
також модель
26>
Ми повинні бути обережними під час використання size().
Для прикладу розглянемо таку програму:
C++
функція прототипу c++
#include> using> namespace> std;> int> main()> {> > // Initializing a vector of string type> > vector vec = {> 'Geeks'> ,> 'For'> ,> 'Geeks'> };> > for> (> int> i = 0 ; i <= vec.size() - 1 ; i++)> > cout << vec[i] <<> ' '> ;> > return> 0;> }> |
>
>Вихід
Geeks For Geeks>
Наведена вище програма працює добре, але тепер розглянемо таку програму:
C++
#include> using> namespace> std;> int> main()> {> > // Initializing a vector of string type> > vector vec = {> 'Geeks'> ,> 'For'> ,> 'Geeks'> };> > vec.clear();> > for> (> int> i = 0; i <= vec.size() - 1; i++)> > cout << vec[i] <<> ' '> ;> > cout <<> 'Geeks For Geeks'> ;> > return> 0;> }> |
>
>
Вихід:
Помилка сегментації SIGEGV
Компілюючи наведену вище програму, ми отримуємо помилку сегментації (SIGSEGV), оскільки тип повернення size() — size_t, який є псевдонімом для unsigned long int.-> unsigned long int var = 0;-> cout
тому ми виконуємо цикл від i = 0 до i = 18446744073709551615 у наведеній вище програмі
javascript
Тепер розглянемо сценарій, коли ми видаляємо елементи з нашого ініціалізованого контейнера, і після послідовності операцій наш контейнер стає порожнім, і, нарешті, ми друкуємо вміст нашого контейнера за допомогою описаного вище методу. Звичайно, це призведе до помилки сегментації (SIGSEGV).
Як це виправити?
Щоб уникнути помилки сегментації (SIGSEGV), бажано навести тип container.size() на цілочисельний тип.
C++
#include> using> namespace> std;> int> main()> {> > // Initializing a vector of string type> > vector vec = {> 'Geeks'> ,> 'For'> ,> 'Geeks'> };> > > // Clearing the vector> > // Now size is equal to 0> > vec.clear();> > > // Typecasting vec.size() to int> > for> (> int> i = 0; i <(> int> )vec.size() - 1; i++)> > cout << vec[i] <<> ' '> ;> > cout <<> 'Geeks For Geeks'> ;> > return> 0;> }> // This code is contributed by Bhuwanesh Nainwal> |
>
>Вихід
Geeks For Geeks>