Skip to main content

C++中 Vector 的 insert() 函数详解

作者:Sneh

导语

本教程将会介绍 C++ 中 vector 的 insert()函数,包括它的原理,以及举例说明它如何通过不同方式完成插入操作。

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

C++ 中 STL 内的 vector::insert() 函数基本都用于将元素或值插入到 vector 容器中。通常情况下,函数会返回一个迭代器,指向第一个插入的元素。

对 Vector 使用 insert() 函数

insert() 方法可在不同情况下以不同方式将单个或多个元素插入给定的 vector。我们可以在 vector 中想要的位置插入一个值,可以一次性插入多个值,甚至可以插入另一个 vector 中的一些值。

下面,让我们看看如何轻松做到这一点。

  1. 在 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,以查看结果。
  1. 多次插入同一个值

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。
  1. 插入另一个数值

除此之外,还可以在 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

在以上代码中,vecvec2 是两个 vector,我们在 vec 中插入了 vec2 的元素。通过按前文介绍的方法,我们传入适当的参数调用 insert() 函数,成功修改了 vector vec,在 vec 的开头位置插入了另一 vector 中的元素。

结语

本教程介绍了 C++中 STL 内 vector insert()函数的原理与用途。为了更好地理解,您可以自己尝试上面的代码片段。