C++ Reference: Standard C++ Library reference: Containers: list: list: insert
admin
2024-03-26 01:21:35
0

C++官网参考链接:https://cplusplus.com/reference/list/list/insert/

公有成员函数 

std::list::insert
C++98
单个元素 (1)    
iterator insert (iterator position, const value_type& val);
填充 (2)    
iterator insert (iterator position, size_type n, const value_type& val);
范围 (3)    
template iterator insert (iterator position, InputIterator first, InputIterator last);
C++11
单个元素 (1)    
iterator insert (const_iterator position, const value_type& val);
填充 (2)    
iterator insert (const_iterator position, size_type n, const value_type& val);
范围 (3)    
template iterator insert (const_iterator position, InputIterator first, InputIterator last);
移动 (4)    
iterator insert (const_iterator position, value_type&& val);
初始化列表 (5)    
iterator insert (const_iterator position, initializer_list il);
插入元素
通过在指定position的元素之前插入新元素来扩展容器。
这将根据插入的元素数量有效地增加list size。
与其他标准顺序容器不同,list和forward_list对象被专门设计为在任何位置(甚至在序列中间)高效插入和删除元素。
实参决定插入多少元素以及初始化它们的值: 

形参 
position 
插入新元素的容器中的位置。
Iterator是成员类型,定义为指向元素的双向iterator(bidirectional iterator)类型。
val
值要复制(或移动)到插入的元素。
成员类型value_type是容器中元素的类型,在list中定义为其第一个模板形参(T)的别名。
n
要插入的元素数量。每个元素都初始化为val的副本。
成员类型size_type是无符号整型。
first,last 
指定元素范围的iterator。范围[first,last)中的元素副本被插入到position(以相同的顺序)。
注意,该范围包括first和last之间的所有元素,包括first指向的元素,但不包括last指向的元素。
函数模板实参InputIterator应该是一个输入iterator(input iterator)类型,它指向可以构造value_type对象的类型元素。
il 
一个initializer_list对象。这些元素的副本插入position(以相同的顺序)。
这些对象是由初始化器列表声明器自动构造的。
成员类型value_type是容器中元素的类型,在list中定义为其第一个模板形参(T)的别名。

返回值
指向新插入的第一个元素的iterator。
成员类型iterator是指向元素的双向iterator(bidirectional iterator)类型。
新元素的存储是使用容器的allocator分配的,这可能会在失败时抛出异常(对于默认allocator,如果分配请求不成功,则抛出bad_alloc)。

用例
// inserting into a list
#include
#include
#include

int main ()
{
  std::list mylist;
  std::list::iterator it;

  // set some initial values:
  for (int i=1; i<=5; ++i) mylist.push_back(i); // 1 2 3 4 5

  it = mylist.begin();
  ++it;       // it points now to number 2                ^

  mylist.insert (it,10);                        // 1 10 2 3 4 5

  // "it" still points to number 2                     ^
  mylist.insert (it,2,20);                      // 1 10 20 20 2 3 4 5

  --it;       // it points now to the second 20         ^

  std::vector myvector (2,30);
  mylist.insert (it,myvector.begin(),myvector.end());
                                                // 1 10 20 30 30 20 2 3 4 5
                                                //                        ^
  std::cout << "mylist contains:";
  for (it=mylist.begin(); it!=mylist.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}
输出: 
mylist contains: 1 10 20 30 30 20 2 3 4 5

复杂度
插入的元素(复制/移动构造)数量中的线性。

iterator的有效性
没有变化。

数据竞争
完成容器的修改。
没有包含的元素被访问。同时访问或修改不同的元素是安全的,但是迭代包含position的范围就不安全了。

异常安全
强保证:如果抛出异常,则容器中不会有任何更改。
如果元素构造的适当实参不支持allocator_traits::construct,或者指定了无效的position或范围,则会导致未定义的行为。

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...