admin 发表于 2023-3-11 11:01:23

vector容器提供了 insert() 和 emplace() 进行元素的插入用法

vector容器提供了 insert() 和 emplace() 这 2 个成员函数


insert()


insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。


iterator insert(pos,elem)       
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
iterator insert(pos,n,elem)       
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
iterator insert(pos,first,last)        
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于
iterator insert(pos,initlist)       
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。


下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。


#include <iostream>
#include <vector>
#include <array>
using namespace std;
int main()
{
    std::vector<int> demo{1,2};
    //第一种格式用法
    demo.insert(demo.begin() + 1, 3);//{1,3,2}
    //第二种格式用法
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
    //第三种格式用法
    std::array<int,3>test{ 7,8,9 };
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
    //第四种格式用法
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}

    return 0;
}


emplace()
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。


该函数的语法格式如下:
iterator emplace (const_iterator pos, args...);


其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
#include <vector>
#include <iostream>
using namespace std;
int main()   
{
    std::vector<int> demo1{1,2};
    //emplace() 每次只能插入一个 int 类型元素
    demo1.emplace(demo1.begin(), 3);
    return 0;
}


结果 3 1 2


页: [1]
查看完整版本: vector容器提供了 insert() 和 emplace() 进行元素的插入用法