C++中的Vector insert()

时间:2020-02-23 14:30:09  来源:igfitidea点击:

介绍

在本教程中,我们将学习C++中的vector insert()。
以及示例,以不同的方式看一下它是如何工作的,并可以用来完成插入操作。

C++中的vector :: insert()函数

基本上,C++中STL的vector :: insert()函数用于将元素或者值插入向量容器中。
通常,该函数返回一个迭代器,该迭代器指向插入的元素中的第一个。

在向量上使用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。
    并打印相同的
  • 然后我们在向量vec上使用参数vec.begin()和10(新值)调用insert()函数。
    注意,这里的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到insert()函数。

  • 这样,正如我们从输出中看到的那样,在向量vec的末尾插入了100次三次。

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",从而在开头插入第二个向量元素。