Сводка векторов C++

искусственный интеллект

содержание

вводить

Общие функции

Экземпляр функции

1. Инициализировать вектор

2. Траверс

3. Измените значение элемента

4. Удалить элементы

5. Сортировка


вводить

Вектор — это контейнер последовательности, который инкапсулирует массив с динамическим размером. Как и любой другой тип контейнера, он может содержать объекты различных типов. Можно просто считать, что вектор — это динамический массив, который может хранить любой тип.

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

При вставке или удалении элементов в середине из-за того, что нужно переместить много элементов, скорость низкая, а среднее затрачиваемое время пропорционально количеству элементов в контейнере.

Общие функции

 
Функция члена роль
vector() Конструктор без аргументов, инициализирует контейнер пустым
vector(int n) Инициализируйте контейнер, чтобы он содержал n элементов
vector(int n, const T & val) Предполагая, что элемент имеет тип T, этот конструктор инициализирует контейнер, чтобы иметь n элементов, каждый со значением val
vector(iterator first, iterator last) first и last могут быть итераторами для других контейнеров. Вообще говоря, результатом инициализации этого конструктора является изменение содержимого векторного контейнера в соответствии с диапазоном [first, last) в других контейнерах.
void assign(int n,const T& x) Установите значение n-го элемента в векторе на x
void clear() удалить все элементы
bool empty() Проверьте, пуст ли контейнер
void pop_back() удалить элемент в конце контейнера
void push_back( const T & val) добавить val в конец контейнера
int size() Возвращает количество элементов в контейнере
Int capacity() Размер текущего выделения вектора
reference at(int pos) Возвращает ссылку на элемент в позиции pos
T & front() Возвращает ссылку на первый элемент в контейнере
T & back() Возвращает ссылку на последний элемент в контейнере
iterator begin() Возвращает указатель на начало вектора, указывающий на первый элемент
iterator end() Возвращает указатель хвоста вектора, указывающий на позицию рядом с последним элементом вектора
reverse_iterator rbegin() Обратный итератор, указывающий на последний элемент
reverse_iterator rend() вернуть итератор на позицию перед первым элементом
iterator insert(iterator i, const T & val) вставляет val в позицию, на которую указывает итератор i, возвращая i
iterator insert( iterator i, iterator first, iterator last) вставляет элемент из интервала [first, last) в другой контейнер в позицию, на которую указывает итератор i
iterator erase(iterator i) Удалить элемент, на который указывает итератор i, возвращаемое значение — это итератор элементов после удаленного элемента
iterator erase(iterator first, iterator last) удалить диапазон [первый, последний) в контейнере
void swap( vector <T> & v) Поменять местами содержимое самого контейнера с другим контейнером v того же типа

Экземпляр функции

1. Инициализировать вектор

(1) vector a(10);//Определяет вектор из 10 целочисленных элементов (имя типа элемента указано в угловых скобках, это может быть любой допустимый тип данных), но начальное значение не задано, его значение не определено.

(2) vector a(10,1);//Определен вектор из 10 целочисленных элементов, и начальное значение каждого элемента равно 1

(3) vector a(b);//Использование вектора b для создания вектора, полное присвоение копии

(4) vector a(b.begin(),b.begin+3);//Определяет значение a как элементы с 0-го по 2-й (всего 3) в b

(5) int b[7]={1,2,3,4,5,9,8};

vector a(b,b+7);//Получаем начальное значение из массива

2. Траверс

#include <string>

#include <cctype>

using namespace std;

int main() {

    vector<int> myVector(10, 22);

// Проходим по индексам.

    for (auto i = 0; i < myVector.size(); i++)

    {

        cout << " " << myVector[i];

    }

    cout << "\n";

    myVector.push_back(44);

//проходим через итератор

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

    {

        cout << " " << *i;

    }

    cout << "\n";

    return 0;

}

3. Измените значение элемента

// list::sort

#include <iostream>

#include <vector>

#include <string>

#include <cctype>

using namespace std;

int main() {

    vector<int> myVector(10, 22);

// Проходим по индексам.

    for (auto i = 0; i < myVector.size(); i++)

    {

         myVector[i]=55;

    }

    cout << "\n";

// Проходим по индексам.

    for (auto i = 0; i < myVector.size(); i++)

    {

        cout << " " << myVector[i];

    }

    cout << "\n";

    myVector.push_back(44);

// Измените значение элемента, пройдя итератор.

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

    {

        if (*i == 55)

        {

            *i = 33;

        }

    }

    cout << "\n";

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

    {

        cout << " " << *i;

    }

    return 0;

}

4. Удалить элементы

#include <iostream>

#include <vector>

#include <string>

#include <cctype>

using namespace std;

 

 

int main() {

    vector<int> myVector = {1,2,3,4,5,6,7,8,9,11};

//Удалить по нижнему индексу.

    for (auto i = 0; i < myVector.size(); i++)

    {

        if (i == 4)

        {

            myVector.erase(myVector.begin()+4);

        }

    }

    cout << "\n";

// Перебираем итератор для удаления.

    for (auto i = myVector.begin(); i != myVector.end();)

    {

        if (*i == 7)

        {

            i=myVector.erase(i);

        }

        else

        {

            i++;

        }

    }

    cout << "\n";

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

    {

        cout << " " << *i;

    }

    cout << "\n";

    return 0;

}

5. Сортировка

// list::sort

#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

bool compar(int a, int b)

{

    return a > b;

}

int main() {

    vector<int> myVector = { 1,2,4,3,5,6,7,8,9,11 };

    sort(myVector.begin(), myVector.end());

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

    {

        cout << " " << *i;

    }

    cout << "\n";

    sort(myVector.begin(), myVector.end(),compar);

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

    {

        cout << " " << *i;

    }

    cout << "\n";

    return 0;

}