Рубрики

Вектор в C ++ STL

Векторы аналогичны динамическим массивам с возможностью автоматического изменения размера при вставке или удалении элемента, при этом их хранение автоматически обрабатывается контейнером. Векторные элементы помещаются в непрерывное хранилище, чтобы к ним можно было обращаться и обходить их с помощью итераторов. В векторах данные вставляются в конце. Вставка в конце занимает разное время, так как иногда может потребоваться расширение массива. Удаление последнего элемента занимает только постоянное время, потому что изменение размера не происходит. Вставка и стирание в начале или в середине линейны во времени.

Некоторые функции, связанные с вектором:
итераторы

  1. begin () — возвращает итератор, указывающий на первый элемент вектора
  2. end () — возвращает итератор, указывающий на теоретический элемент, следующий за последним элементом в векторе
  3. rbegin () — возвращает обратный итератор, указывающий на последний элемент вектора (обратное начало). Движется от последнего к первому элементу
  4. rend () — возвращает обратный итератор, указывающий на теоретический элемент, предшествующий первому элементу в векторе (рассматривается как обратный конец)
  5. cbegin () — возвращает постоянный итератор, указывающий на первый элемент вектора.
  6. cend () — возвращает постоянный итератор, указывающий на теоретический элемент, который следует за последним элементом в векторе.
  7. crbegin () — возвращает постоянный обратный итератор, указывающий на последний элемент вектора (обратное начало). Движется от последнего к первому элементу
  8. crend () — возвращает постоянный обратный итератор, указывающий на теоретический элемент, предшествующий первому элементу в векторе (рассматривается как обратный конец)

// C ++ программа для иллюстрации
// итераторы в векторе
#include <iostream>
#include <vector>

  

using namespace std;

  

int main()

{

    vector<int> g1;

  

    for (int i = 1; i <= 5; i++)

        g1.push_back(i);

  

    cout << "Output of begin and end: ";

    for (auto i = g1.begin(); i != g1.end(); ++i)

        cout << *i << " ";

  

    cout << "\nOutput of cbegin and cend: ";

    for (auto i = g1.cbegin(); i != g1.cend(); ++i)

        cout << *i << " ";

  

    cout << "\nOutput of rbegin and rend: ";

    for (auto ir = g1.rbegin(); ir != g1.rend(); ++ir)

        cout << *ir << " ";

  

    cout << "\nOutput of crbegin and crend : ";

    for (auto ir = g1.crbegin(); ir != g1.crend(); ++ir)

        cout << *ir << " ";

  

    return 0;

}

Выход:

Output of begin and end: 1 2 3 4 5 
Output of cbegin and cend: 1 2 3 4 5 
Output of rbegin and rend: 5 4 3 2 1 
Output of crbegin and crend : 5 4 3 2 1

Вместимость

  1. size () — Возвращает количество элементов в векторе.
  2. max_size () — возвращает максимальное количество элементов, которое может содержать вектор.
  3. acity () — Возвращает размер пространства хранения, выделенного в настоящее время для вектора, выраженного в виде количества элементов.
  4. resize (n) — изменяет размеры контейнера так, чтобы он содержал «n» элементов.
  5. empty () — Возвращает, пуст ли контейнер.
  6. shrink_to_fit () — Уменьшает емкость контейнера до его размера и уничтожает все элементы за пределами емкости.
  7. Reserve () — Запрашивает, чтобы емкость вектора была, по крайней мере, достаточной, чтобы содержать n элементов

// C ++ программа для иллюстрации
// емкостная функция в векторе
#include <iostream>
#include <vector>

  

using namespace std;

  

int main()

{

    vector<int> g1;

  

    for (int i = 1; i <= 5; i++)

        g1.push_back(i);

  

    cout << "Size : " << g1.size();

    cout << "\nCapacity : " << g1.capacity();

    cout << "\nMax_Size : " << g1.max_size();

  

    // изменяет размер вектора до 4

    g1.resize(4);

  

    // печатает размер вектора после resize ()

    cout << "\nSize : " << g1.size();

  

    // проверяет, является ли вектор пустым или нет

    if (g1.empty() == false)

        cout << "\nVector is not empty";

    else

        cout << "\nVector is empty";

  

    // Сжимаем вектор

    g1.shrink_to_fit();

    cout << "\nVector elements are: ";

    for (auto it = g1.begin(); it != g1.end(); it++)

        cout << *it << " ";

  

    return 0;

}

Выход:

Size : 5
Capacity : 8
Max_Size : 4611686018427387903
Size : 4
Vector is not empty
Vector elements are: 1 2 3 4

Элемент доступа:

  1. оператор ссылки [g] — возвращает ссылку на элемент в позиции 'g' в векторе
  2. at (g) — возвращает ссылку на элемент в позиции 'g' в векторе
  3. front () — возвращает ссылку на первый элемент в векторе
  4. back () — возвращает ссылку на последний элемент в векторе
  5. data () — возвращает прямой указатель на массив памяти, используемый вектором для хранения собственных элементов.

// C ++ программа для иллюстрации
// элемент accesser в векторе
#include <bits/stdc++.h>

using namespace std;

  

int main()

{

    vector<int> g1;

  

    for (int i = 1; i <= 10; i++)

        g1.push_back(i * 10);

  

    cout << "\nReference operator [g] : g1[2] = " << g1[2];

  

    cout << "\nat : g1.at(4) = " << g1.at(4);

  

    cout << "\nfront() : g1.front() = " << g1.front();

  

    cout << "\nback() : g1.back() = " << g1.back();

  

    // указатель на первый элемент

    int* pos = g1.data();

  

    cout << "\nThe first element is " << *pos;

    return 0;

}

Выход:

Reference operator [g] : g1[2] = 30
at : g1.at(4) = 50
front() : g1.front() = 10
back() : g1.back() = 100
The first element is 10

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

  1. assign () — присваивает новое значение векторным элементам, заменяя старые.
  2. push_back () — толкает элементы в вектор сзади
  3. pop_back () — используется для выталкивания или удаления элементов из вектора сзади.
  4. insert () — вставляет новые элементы перед элементом в указанной позиции.
  5. erase () — используется для удаления элементов из контейнера из указанной позиции или диапазона.
  6. swap () — используется для замены содержимого одного вектора на другой вектор того же типа. Размеры могут отличаться.
  7. clear () — используется для удаления всех элементов векторного контейнера
  8. emplace () — расширяет контейнер, вставляя новый элемент в позицию
  9. emplace_back () — используется для вставки нового элемента в векторный контейнер, новый элемент добавляется в конец вектора
  10. ,

// C ++ программа для иллюстрации
// Модификаторы в векторе
#include <bits/stdc++.h>
#include <vector>

using namespace std;

  

int main()

{

    // Назначаем вектор

    vector<int> v;

  

    // заполняем массив 10 пять раз

    v.assign(5, 10);

  

    cout << "The vector elements are: ";

    for (int i = 0; i < v.size(); i++)

        cout << v[i] << " ";

  

    // вставляет 15 в последнюю позицию

    v.push_back(15);

    int n = v.size();

    cout << "\nThe last element is: " << v[n - 1];

  

    // удаляет последний элемент

    v.pop_back();

  

    // печатает вектор

    cout << "\nThe vector elements are: ";

    for (int i = 0; i < v.size(); i++)

        cout << v[i] << " ";

  

    // вставляем 5 в начале

    v.insert(v.begin(), 5);

  

    cout << "\nThe first element is: " << v[0];

  

    // удаляет первый элемент

    v.erase(v.begin());

  

    cout << "\nThe first element is: " << v[0];

  

    // вставляет в начале

    v.emplace(v.begin(), 5);

    cout << "\nThe first element is: " << v[0];

  

    // вставляем 20 в конце

    v.emplace_back(20);

    n = v.size();

    cout << "\nThe last element is: " << v[n - 1];

  

    // стирает вектор

    v.clear();

    cout << "\nVector size after erase(): " << v.size();

  

    // два вектора для выполнения свопинга

    vector<int> v1, v2;

    v1.push_back(1);

    v1.push_back(2);

    v2.push_back(3);

    v2.push_back(4);

  

    cout << "\n\nVector 1: ";

    for (int i = 0; i < v1.size(); i++)

        cout << v1[i] << " ";

  

    cout << "\nVector 2: ";

    for (int i = 0; i < v2.size(); i++)

        cout << v2[i] << " ";

  

    // Меняет местами v1 и v2

    v1.swap(v2);

  

    cout << "\nAfter Swap \nVector 1: ";

    for (int i = 0; i < v1.size(); i++)

        cout << v1[i] << " ";

  

    cout << "\nVector 2: ";

    for (int i = 0; i < v2.size(); i++)

        cout << v2[i] << " ";

}

Выход:

The vector elements are: 10 10 10 10 10 
The last element is: 15
The vector elements are: 10 10 10 10 10 
The first element is: 5
The first element is: 10
The first element is: 5
The last element is: 20
Vector size after erase(): 0

Vector 1: 1 2 
Vector 2: 3 4 
After Swap 
Vector 1: 3 4 
Vector 2: 1 2

Все векторные функции:

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Вектор в C ++ STL

0.00 (0%) 0 votes