了解C++中的Vector insert()。

957 阅读2分钟

简介

在本教程中,我们将学习C++中的向量插入()。并通过实例来了解它是如何工作的,以及如何用不同的方式来完成插入操作。

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

基本上,C++中STLvector::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 上调用insert()函数,参数为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传递给insert()函数。
  • 通过这种方式,我们可以从输出中观察到,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

这里,vecvec2 是两个向量。其中vec2是我们需要插入向量vec中的元素。如前所述,我们用适当的参数调用insert() 函数。这就修改了我们的向量vec ,结果是将第二个向量的元素插入到了开头。

总结

因此,在本教程中,我们解释了C++中STL的向量插入()函数的工作和使用。为了更好地理解,我们建议大家自己尝试上述代码片段。如果有任何问题,请在下面留言。

参考文献