C++ Reference: Standard C++ Library reference: Containers: deque: deque: insert

news2025/11/16 3:37:37

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

公有成员函数 
<deque>
std::deque::insert
C++98
单个元素 (1)    
iterator insert (iterator position, const value_type& val);
填充 (2)    
void insert (iterator position, size_type n, const value_type& val);
范围 (3)    
template <class InputIterator> void 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 <class InputIterator>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<value_type> il);
插入元素
deque容器通过在指定位置的元素之前插入新元素来扩展。
这将根据所插入元素的数量有效地增加容器的size。
deque设计为从序列的结束或开始高效地执行插入(和删除)。在其他位置插入通常比在list或forward_list容器中效率低。
形参决定插入多少元素以及初始化它们的值: 

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

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

用例
// inserting into a deque
#include <iostream>
#include <deque>
#include <vector>

int main ()
{
  std::deque<int> mydeque;

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

  std::deque<int>::iterator it = mydeque.begin();
  ++it;

  it = mydeque.insert (it,10);                  // 1 10 2 3 4 5
  // "it" now points to the newly inserted 10

  mydeque.insert (it,2,20);                     // 1 20 20 10 2 3 4 5
  // "it" no longer valid!

  it = mydeque.begin()+2;

  std::vector<int> myvector (2,30);
  mydeque.insert (it,myvector.begin(),myvector.end());
                                                // 1 20 30 30 20 10 2 3 4 5

  std::cout << "mydeque contains:";
  for (it=mydeque.begin(); it!=mydeque.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}
输出:

复杂度 
在插入的元素数量上是线性的(复制/移动构造)。另外,根据特定的库实现,加上在position和deque的结束处之一之间的元素数量中的一个额外的线性。

迭代器有效性
如果插入发生在序列的开始或结束处,则与此容器相关的所有迭代器都将失效,但指针和引用仍然有效,指向调用之前所引用的相同元素。
如果插入发生在deque的其他位置,则与此容器相关的所有迭代器、指针和引用都将失效。

数据竞争
完成容器的修改。
如果插入发生在序列的开始或结束处,则不会访问所包含的元素(尽管参见上面的迭代器有效性)。
如果它发生在其他地方,同时访问元素是不安全的。

异常安全
如果操作在begin或end处插入单个元素,则在异常情况下容器中不存在任何更改(强保证)。
否则,保证容器以有效状态结束(基本保证)。
如果元素结构的适当实参不支持allocator_traits::construct,或者指定了无效的position或范围,则会导致未定义的行为。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试真题(JavaScript)

更新中....... 创作不易&#xff0c;如果你觉得有帮助&#xff0c;就三连支持吧 本目录中所有算法题均使用JavaScript语言实现&#xff0c;并且基于node环境运行。 因此&#xff0c;我们需要在本地安装node环境&#xff0c;安装完node环境后&#xff0c;可以使用node命令直接运…

Golang学习之路6-goroutine并发

文章目录前言一、goroutine用法二、goroutine循环三、goroutine提前退出四、goroutine双向管道五、goroutine单向管道六、监听管道如下图&#xff0c;可以看到当我们监听到有写入数据时会得到对应的类型数据&#xff0c;当没有写入时 default 一直在负责监听&#xff01; ![在这…

前端播放m3u8格式视频

m3u8是苹果公司推出的视频播放标准&#xff0c;是m3u的一种&#xff0c;只是编码格式采用的是UTF-8。m3u8准确来说是一种索引文件&#xff0c;使用m3u8文件实际上是通过它来解析对应的放在服务器上的视频网络地址&#xff0c;从而实现在线播放。 m3u8格式的视频是将文件分成一小…

[附源码]计算机毕业设计JAVA个性化新闻推荐系统

[附源码]计算机毕业设计JAVA个性化新闻推荐系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM myba…

高级篇之ENC1V2新用法USB/RS232串口转Visca-Over-IP

高级篇之ENC1V2新用法USB/RS232串口转Visca-Over-IP术语背景现实需求大家好&#xff0c;最近ENC1-V2卖的很火&#xff0c;主要是因为发现了它的一个新用法&#xff0c;究竟是什么&#xff0c;马上揭晓。 术语 摄像机控制代码协议包括PTZ,VISCA,VISCA-OVER-IP,PELCO等, VISCA是…

java计算机毕业设计ssm求职与招聘网站的设计与实现

项目介绍 本前途招聘求职网站是针对目前仓库的实际需求,从实际工作出发,对过去的前途招聘求职网站存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。 本系统结合计算机系统的结构、概念…

配置hadoop模板虚拟机

文章目录前言一、VMvare安装与添加Linux虚拟机二、linux服务器更改网络配置三、安装epel-release以及关闭防火墙关闭防火墙四、配置用户权限五、卸载自带的JDK前言 本文主要讲述配置hadoop集群的前置工作之一&#xff0c;配置模板虚拟机。 模板虚拟机的用处在于&#xff0c;我…

通过工具和字节码带你深入理解运行时数据区

上篇文章介绍了JVM运行时数据区的一些信息&#xff0c;这篇文章将通过工具和字节码加深对常用的堆和虚拟机栈部分的理解。 虚拟机栈再理解 下面通过3个简单的例子再深入了解一下虚拟机栈区域。 1. 虚拟机栈的出入栈过程 public class JVMStack {public static void main(St…

【JVM学习】Jconsole 配置jmx 监控JVM

1. 配置jvm启动参数 在使用jconsole监控jvm之前&#xff0c;首先需要先打开jmx。启动jvm时&#xff0c;添加以下参数。jmx通过58088端口对外开放。 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port58088 -Dcom.sun.management.jmxremote.sslfalse -Dcom…

低代码能为企业带来什么好处

低代码自问世以来&#xff0c;逐步进入到公众视野&#xff0c;由于其可视化的操作界面、可以快速开发应用等优势&#xff0c;让企业在数字化转型过程中得到技术和速度的支撑。在低代码平台&#xff0c;技术人员和业务专业人员可通过图形界面&#xff08;而不是传统的计算机编程…

m基于matlab的OQPSK载波同步通信系统仿真,载波同步采用costas环

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 OQPSK调制技术是一种恒包络调制技术&#xff0c;受系统非线性影响小&#xff0c;具有较高的带宽利用率和功率利用率&#xff0c;在卫星环境、无线环境下得到广泛应用。因此&#xff0c;在…

案例分析 丨湖仓一体助力保险企业数据战略转型升级

当下&#xff0c;海量数据结合前沿技术架构正在为保险业带来根本性的变革。本文以某知名保险机构为例&#xff0c;结合偶数行业实践经验&#xff0c;介绍保险企业如何利用湖仓一体技术推动数据战略转型升级。 背景介绍 在对该客户需求进行深度挖掘并横向比较行业现状后&#xf…

基于PHP+MySQL的图书分享平台

读书是提高一个人思维,最直接,最简单和最方便的方式。同时读书可以让自己的思想得到提升,保证自己一直都在时代的检前沿。图书是知识的载体,但是它也有它的特殊性。那就是他可以进行分享。很多时候,人们在购买图书并进行阅读之后,很可能就不再需要了,这个时候就可以和其他人进行…

SpringBoot完成查询和增加功能(简易版)

目录 一、环境准备 1、db 2、html 打开前端开发工具HBuilder X&#xff0c;把准备好的前端spboot移进去&#xff1a; 接着查看电脑的mvn版本&#xff0c;选中项目右键&#xff1a; npm -version npm i​ 3、java 在弹出的窗口中选择你需要导入的项目&#xff0c;点击ok…

python的网络请求库urllib、urllib2、urllib3、request的联系

文章目录1. 简介2. urllib3. urllib24. urllib35. requests6. 相关文章1. 简介 urllib、urllib2、urllib3、request均能通过网络访问互联网上的资源文件&#xff0c;它们通过使用统一资源定位符&#xff08;URL&#xff09;并结合re模块完成很多意想不到的操作。 urllib&…

数据库与缓存的一致性

数据库与缓存的一致性 一致性就是数据保持一致&#xff0c;在分布式系统中&#xff0c;可以理解为多个节点中数据的值是一致的。 强一致性&#xff1a;这种一致性级别是最符合用户直觉的&#xff0c;它要求系统写入什么&#xff0c;读出来的也会是什么&#xff0c;用户体验好…

Windows系统怎么加密文件夹?

Windows系统是目前使用人数最多的电脑系统&#xff0c;那么你知道在Windows系统上怎么加密文件夹吗&#xff1f;下面这篇文章&#xff0c;将向大家介绍两种Windows系统文件夹加密的方法&#xff0c;希望对你有所帮助。 方法一&#xff1a;使用超级加密3000进行加密 1、打开超级…

C和C++导出DLL后在Csharp中调用函数名的差异

参考链接&#xff1a;cc​​​​​​​在Unity中调用C代码&#xff1a;出现EntryPointNotFoundException的解决办法&#xff1a; - 知乎 (zhihu.com) __declspec(dllexport)的位置问题 - 岚之山 - 博客园 (cnblogs.com) 如果是报如下异常 System.EntryPointNotFoundExceptio…

【GlobalMapper精品教程】017:KML generator快速将坐标转为KML文件

本文介绍KML generator软件,并快速将坐标转为KML文件的使用方法,并用globalmapper中打开kml文件加以验证。本专栏配套完整的案例数据包,请打开data017.rar获取软件及数据。 文章目录 1. KML文件介绍2. kml generator软件介绍2.1 单点KML制作2.2 Excel数据KML制作2.3 文本文件…

【模电实验】【超值1 + 1】【验证性实验——分立元件“OTL“功率放大器实验】【验证性实验——分立元件稳压电源实验】

实验9-1 验证性实验——分立元件"OTL"功率放大器实验 Multisim仿真 编辑分立元件OTL功率放大器的仿真电路如下&#xff1a; 静态工作点的调试与仿真如下&#xff1a; 发射极基极集电极T1277mV998mV5.66VT26.38V6.93V12VT36.20V5.66V0V 交越失真分析如下&#xff1a…