C++中 Vector 的 insert() 函数详解
作者:Sneh
导语
本教程将会介绍 C++ 中 vector 的 insert()函数,包括它的原理,以及举例说明它如何通过不同方式完成插入操作。
C++ 中的 vector::insert() 函数
C++ 中 STL 内的 vector::insert()
函数基本都用于将元素或值插入到 vector 容器中。通常情况下,函数会返回一个迭代器,指向第一个插入的元素。
对 Vector 使用 insert() 函数
insert()
方法可在不同情况下以不同方式将单个或多个元素插入给定的 vector。我们可以在 vector 中想要的位置插入一个值,可以一次性插入多个值,甚至可以插入另一个 vector 中的一些值。
下面,让我们看看如何轻松做到这一点。
- 在 Vector 中插入单个值
修改vector时,可以直接给 insert() 函数传入一个迭代器以及想要插入的值,迭代器指向我们想要的位置。
下面的例子演示了如何在 vector 最前面的位置插入数值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
以上代码中,
- 首先初始化一个 vector,此处是
vec
,并把它 print 出来。- 然后调用
vec
的 insert()函数,使用参数vec.begin()
和10(新的值)。注意,vec.begin()
返回的是一个指向 vector 起点的迭代器。- 插入完成后,用一个简单的 for loop print 出新 vector,以查看结果。
- 多次插入同一个值
用 insert()
还可以一次性给 vector 插入多个值,只需要给函数传入指向插入位置的迭代器、插入值需要重复的次数以及插入值即可。
以下例子演示了如何操作。
#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
以上代码中,
- 首先初始化一个 vector,此处是
vec
,并把它print出来。- 然后向 insert()传入指向 vector 末尾的迭代器,即
vec.end()
的输出,数值3,也就是传入值要重复的次数,最后是数值100。- 如此,从输出中可以看出,
vec
的末尾插入了三次数值100。
- 插入另一个数值
除此之外,还可以在 vector 中插入另一个 vector 中的元素,只需要三个迭代器,一个指向 vector 中插入另一 vector 的位置,还有两个分别指向另一 vector 的开始和结束位置。
让我们通过一个简单示例来理解它的工作原理:
#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
是两个 vector,我们在 vec 中插入了 vec2 的元素。通过按前文介绍的方法,我们传入适当的参数调用 insert()
函数,成功修改了 vector vec
,在 vec
的开头位置插入了另一 vector 中的元素。
结语
本教程介绍了 C++中 STL 内 vector insert()函数的原理与用途。为了更好地理解,您可以自己尝试上面的代码片段。