Поиск по сайту:

Понимание векторной вставки() в 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.