Понимание векторной вставки() в C++
Введение
В этом уроке мы узнаем о векторной вставке() в C++. А также посмотрите, как это работает и может быть использовано для выполнения операции вставки различными способами с примерами.
Функция vector::insert() в C++
По сути, функция vector::insert()
из STL в C++ используется для вставки элементов или значений в векторный контейнер. В общем случае функция возвращает итератор, указывающий на первый из вставленных элементов.
Использование функции insert() для векторов
Метод insert()
можно использовать для вставки одного или нескольких элементов в заданный вектор разными способами в разных случаях. Мы можем вставить одно значение в желаемую позицию, мы можем даже вставить сразу несколько значений в вектор, и даже мы можем вставить в него кучу значений из другого вектора.
Итак, давайте посмотрим, как мы можем сделать это с легкостью.
1. Вставьте одно значение в вектор
Мы можем напрямую передать итератор, указывающий на желаемую позицию, и значение, которое нужно туда вставить, в функцию insert()
для изменения вектора.
Посмотрите внимательно на пример ниже, здесь мы пытаемся вставить значение 10 в начало вектора.
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> vec {1,2,3,4,5};
cout<<"Intially vector: ";
for(auto i=vec.begin(); i<vec.end(); i++)
{
cout<<" "<<*i;
}
vec.insert(vec.begin(),10);//Inserting 10 to the vector
cout<<"\n\nThe modified vector is: ";
for(auto i=vec.begin(); i<vec.end(); i++)
{
cout<<" "<<*i;
}
return 0;
}
Выход;
Intially vector: 1 2 3 4 5
The modified vector is: 10 1 2 3 4 5
Здесь,
- Сначала мы инициализируем вектор
vec
. И распечатать то же самое, - Затем мы вызываем функцию insert() для вектора
vec
с параметрамиvec.begin()
и 10 (новое значение). Обратите внимание, здесьvec.begin()
возвращает итератор, указывающий на начало вектора, - После вставки мы печатаем новый вектор, используя простой цикл for, чтобы увидеть результирующий вектор.
2. Вставьте одно и то же значение несколько раз
Мы также можем вставить несколько значений в вектор одновременно, используя функцию insert()
. Это можно сделать, передав итератор, указывающий на нашу начальную позицию, куда мы хотим вставить, количество повторений значения и, наконец, значение.
Пример ниже иллюстрирует правильное использование.
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> vec {10,20,30,40};
cout<<"Intially vector: ";
for(auto i=vec.begin(); i<vec.end(); i++)
{
cout<<" "<<*i;
}
vec.insert(vec.end(),3,100);//Inserting 100, 3 times to the vector
cout<<"\n\nThe modified vector is: ";
for(auto i=vec.begin(); i<vec.end(); i++)
{
cout<<" "<<*i;
}
return 0;
}
Выход;
Intially vector: 10 20 30 40
The modified vector is: 10 20 30 40 100 100 100
Здесь,
- Мы инициализируем наш вектор
vec
и печатаем его, - Затем мы передаем итератор, указывающий на конец вектора, возвращаемый функцией
vec.end()
, 3 (количество раз, которое мы хотим, чтобы значение повторялось), и значение 100. в функцию вставки(). - Таким образом, как видно из вывода, число 100 вставляется трижды в конец вектора
vec
.
3. Вставьте другой вектор
Далее, мы также можем вставить в наш старый вектор элементы другого вектора. Просто нам нужно передать итератор, указывающий на позицию в нашем векторе, куда нам нужно вставить другой вектор. При этом итераторы указывают на начало и конец второго вектора.
Давайте возьмем небольшой пример, чтобы понять работу.
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> vec {2,4,6,8};
vector<int> vec2 {1,3,5,7};
cout<<"Intially first vector: ";
for(auto i=vec.begin(); i<vec.end(); i++)
{
cout<<" "<<*i;
}
cout<<"\nIntially second vector: ";
for(auto i=vec2.begin(); i<vec2.end(); i++)
{
cout<<" "<<*i;
}
//Inserting vec2 at the beginning of the vec vector
vec.insert(vec.begin(),vec2.begin(),vec2.end());
cout<<"\n\nThe modified vector is: ";
for(auto i=vec.begin(); i<vec.end(); i++)
{
cout<<" "<<*i;
}
return 0;
}
Выход;
Intially first vector: 2 4 6 8
Intially second vector: 1 3 5 7
The modified vector is: 1 3 5 7 2 4 6 8
Здесь vec
и vec2
— два вектора. Из которых vec2 — это тот, элементы которого нам нужно вставить в вектор, vec. Мы вызываем функцию insert()
с соответствующими параметрами, как упоминалось ранее. Это изменяет наш вектор vec
, что приводит к вставке вторых элементов вектора в начале.
Заключение
Итак, в этом уроке мы объяснили работу, а также использование векторной функции insert() из STL в C++. Для лучшего понимания рекомендуем попробовать приведенные выше фрагменты кода самостоятельно. И по любым вопросам, не стесняйтесь комментировать ниже.
Рекомендации
- Заменить элемент на определенную позицию вектора – вопрос о переполнении стека,
- Как вставить элемент в начало вектора? – Вопрос о переполнении стека,
- Векторы в C++ — Учебное пособие по JournalDev.