C++ Reference: Standard C++ Library reference: Containers: list: list: list

news2024/11/25 22:35:12

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

公有成员函数
<list>
std::list::list
C++98
默认构造函数 (1)    
explicit list (const allocator_type& alloc = allocator_type());
填充构造函数 (2)    
explicit list (size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type());
范围构造函数 (3)    
template <class InputIterator>  list (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type());
复制构造函数 (4)    
list (const list& x);
C++11
默认构造函数 (1)    
explicit list (const allocator_type& alloc = allocator_type());
填充构造函数 (2)    
explicit list (size_type n);         
list (size_type n, const value_type& val, const allocator_type& alloc = allocator_type());
范围构造函数 (3)    
template <class InputIterator>  list (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type());
复制构造函数 (4)    
list (const list& x);
list (const list& x, const allocator_type& alloc);
移动构造函数 (5)    
list (list&& x);
list (list&& x, const allocator_type& alloc);
initializer list (6)    
list (initializer_list<value_type> il, const allocator_type& alloc = allocator_type());
C++14
默认构造函数 (1)    
list();
explicit list (const allocator_type& alloc);
填充构造函数 (2)    
explicit list (size_type n, const allocator_type& alloc = allocator_type());         
list (size_type n, const value_type& val, const allocator_type& alloc = allocator_type());
范围构造函数 (3)    
template <class InputIterator>  list (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type());
复制构造函数 (4)    
list (const list& x);
list (const list& x, const allocator_type& alloc);
移动构造函数 (5)    
list (list&& x);
list (list&& x, const allocator_type& alloc);
初始化列表构造函数 (6)    
list (initializer_list<value_type> il, const allocator_type& alloc = allocator_type());
构造列表
构造一个list容器对象,根据使用的构造函数版本初始化它的内容:
C++98
(1)空容器构造函数(默认构造函数)
构造一个空容器,不包含任何元素。
(2)构造函数
构造一个包含n个元素的容器。每个元素都是val的副本。
(3)构造函数
构造一个包含与范围[first,last)相同数量元素的容器,每个元素以相同的顺序从该范围中相应的元素构造。
(4)拷贝构造函数
以相同的顺序,用x中每个元素的副本构造一个容器。
容器保持alloc的内部副本,该副本用于在其生命周期内分配存储空间。
复制构造函数(4)创建一个容器,该容器保存并使用x的分配器的副本。
使用这个内部分配器(internal allocator)来分配元素的存储空间。
C++11
(1)空容器构造函数(默认构造函数) 
构造一个空(empty)容器,不包含任何元素。
(2)填充构造函数
构造一个包含n个元素的容器。每个元素都是val(如果提供)的副本。
(3)构造函数
构造一个包含与范围[first,last)相同数量元素的容器,每个元素的位置都是从该范围中相应的元素以相同的顺序构造的。
(4)复制构造函数(和使用分配器复制) 
以相同的顺序,用x中每个元素的副本构造一个容器。
(5)移动构造函数(和使用分配器移动) 
构造一个获取x元素的容器。
如果指定了alloc且与x的分配器不同,则移动元素。否则,不构造任何元素(它们的所有权直接转移)。
x处于未指定但有效的状态。
(6)初始化列表构造函数
用il中每个元素的副本以相同的顺序构造一个容器。
容器保留了一个alloc的内部副本,该副本用于为其元素分配和释放存储空间,以及构造和销毁它们(由其allocator_traits指定)。
如果没有alloc实参传递给构造函数,则使用默认构造的分配器,以下情况除外: 
-复制构造函数(4,第一个签名)创建一个容器,该容器保存并使用通过在x的分配器上调用适当的selected_on_container_copy_construction特性返回的分配器的副本。
-移动构造函数(5,第一个签名)获取x的分配器。
通过使用适当的实参调用allocator_traits::construct来复制、移动或以其他方式构造所有元素。

形参 
alloc
分配器对象。
容器保留并使用这个分配器的内部副本。
成员类型allocator_type是容器使用的内部分配器类型,在list中定义为它的第二个模板形参(Alloc)的别名。
如果allocator_type是默认分配器(allocator)的实例化(它没有状态),这是不相关的。
n
初始容器大小(即,在构造时容器中元素的数量)。
成员类型size_type是无符号整型。
val 
值来填充容器。容器中的n个元素都初始化为该值的一个副本。
成员类型value_type是容器中元素的类型,在list中定义为其第一个模板形参(T)的别名。
first,last 
输入迭代器(Input iterators)到范围内的初始和最终位置。使用的范围是[first,last),它包括first和last之间的所有元素,包括由first指向的元素,但不包括由last指向的元素。
函数模板实参InputIterator应该是一个输入迭代器(input iterator)类型,它指向可以构造value_type对象的类型元素。
x
相同类型的另一个list对象(具有相同的类模板实参),其内容被复制或获取。
il
一个initializer_list对象。
这些对象是由初始化器列表声明器自动构造的。
成员类型value_type是容器中元素的类型,在list中定义为其第一个模板形参(T)的别名。

用例
// constructing lists
#include <iostream>
#include <list>

int main ()
{
  // constructors used in the same order as described above:
  std::list<int> first;                                // empty list of ints
  std::list<int> second (4,100);                       // four ints with value 100
  std::list<int> third (second.begin(),second.end());  // iterating through second
  std::list<int> fourth (third);                       // a copy of third

  // the iterator constructor can also be used to construct from arrays:
  int myints[] = {16,2,77,29};
  std::list<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );

  std::cout << "The contents of fifth are: ";
  for (std::list<int>::iterator it = fifth.begin(); it != fifth.end(); it++)
    std::cout << *it << ' ';

  std::cout << '\n';

  return 0;
}
输出: 

复杂性
对于默认构造函数(1)和移动构造函数(5),都是常量(除非alloc不同于x的分配器)。
对于所有其他情况,结果容器中的元素数量中是线性的。 

迭代器的有效性
如果元素被移动的话,移动构造函数(5)会使指向x元素的迭代器、指针和引用失效。

数据竞争
所有复制的元素都被访问。
移动构造函数(5)修改x。

异常安全
强保证:在抛出异常的情况下没有影响。
如果元素结构的适当实参不支持allocator_traits::construct,或者由[first,last)指定的范围无效,则会导致未定义的行为。

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

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

相关文章

将整个网站变为黑白色

目录 效果&#xff1a; 代码&#xff1a; 兼容性写法&#xff1a; 原理&#xff1a; 效果&#xff1a; ps&#xff1a;实测淘宝也是用的这种方式&#xff0c;有兴趣可以去看看 代码&#xff1a; 使用方式就是找到根标签&#xff0c;将里面的两行代码放进去即可 html {filte…

手写Redux(二):实现React-redux

在React中&#xff0c;组件和组件之间通过props传递数据的规范&#xff0c;极大地增强了组件之间的耦合性&#xff0c;而context类似全局变量一样&#xff0c;里面的数据能被随意接触就能被随意修改&#xff0c;每个组件都能够改context里面的内容会导致程序的运行不可预料。 …

借助cubeMX实现STM32MP157A(-M4核)UART、按键中断、环境检测开关实验

main.c 可以添加一句打印提示 int main(void) {/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init(…

准备蓝桥杯的宝贝们,二分法基础篇(下)例题讲解

二分法例题第一题&#xff1a;搜索插入位置解法一&#xff08;左闭右闭&#xff09;解法二&#xff08;左闭右开&#xff09;解法三&#xff08;暴力求解&#xff09;第二题&#xff1a;在排序数组中查找元素的第一个和最后一个位置解法一&#xff08;左闭右闭&#xff09;第三…

​Base64编码知识详解 ​

在我们进行前端开发时&#xff0c;针对项目优化&#xff0c;常会提到一条&#xff1a;针对较小图片&#xff0c;合理使用Base64字符串替换内嵌&#xff0c;可以减少页面http请求。 并且还会特别强调下&#xff0c;必须是小图片&#xff0c;大小不要超过多少KB&#xff0c;等等。…

Flume监听多个文件目录,并根据文件名称不同,输出到kafka不同topic中

一、Flume监听多个文件目录 1. flume的环境搭建和基础配置参考 https://blog.csdn.net/qinqinde123/article/details/128130131 2. 修改配置文件flume-conf.properties #定义两个是数据源source1、source2 agent.sources source1 source2 agent.channels channel1 agent.…

B. Password(KMP)

Problem - 126B - Codeforces Asterix、Obelix和他们的临时伙伴Suffix和Prefix终于找到了和谐寺。然而&#xff0c;它的门被牢牢地锁住了&#xff0c;即使是Obelix也没能打开它们。 过了一会儿&#xff0c;他们发现在寺庙大门下面的一块岩石上刻着一个字符串。亚力认为那是打开…

realme手机配什么蓝牙耳机?realme蓝牙耳机推荐

蓝牙耳机作为人手必备的单品&#xff0c;不同厂商的产品更是多种多样&#xff0c;用户可以有更多的选择&#xff0c;选购蓝牙耳机的时候&#xff0c;除了看重佩戴舒适度、发声单元人们更加追求最新研发的技术。realme是为年轻人而来的科技潮牌。秉持“敢越级”品牌理念&#xf…

iOS MD5基础知识

MD5信息摘要算法&#xff08;英语&#xff1a;MD5 Message-Digest Algorithm&#xff09;&#xff0c;一种被广泛使用的密码散列函数&#xff0c;可以产生出一个128位&#xff08;16字节&#xff09;的散列值&#xff08;hash value&#xff09;&#xff0c;用于确保信息传输完…

实现了Spring的Aware接口的自定义类什么时候执行的?

在之前的内容中 Spring的Aware接口有什么用&#xff1f;_轻尘的博客-CSDN博客_aware接口的作用 了解到用户可以通过实现相应的Aware接口来获取spring框架提供的能力&#xff0c;俗称“攀亲戚” 以如下代码为例&#xff0c;自定义类MyAware实现了BeanFactroryAware&#xff0…

数据库、计算机网络,操作系统刷题笔记5

数据库、计算机网络&#xff0c;操作系统刷题笔记5 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&…

【MySQL基础】MySQL常用的图形化管理工具有那些?

目录 一、为什么要使用MySQL图形化管理工具 原因 / 目的 / 作用 二、什么是DOS窗口? 三、常见的MySQL图形化管理工具有那些&#xff1f; 四、 常见几个MySQL图形工具的介绍 Navicat SQLyog MySQL Workbench DataGrip 五、Navicat图形工具的安装与使用 第一步&#x…

python带你制作随机点名系统,超级简单

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 在某些难以抉择得时候&#xff0c;我们经常要用外力来帮助我们做出选择 比如&#xff0c;课堂随机点名或面对活动需要人上台表演时等等场景 这个时候&#xff0c;有一个随机点名系统就非常好啦&#xff0c;毕竟运气得事~ …

QT之 给控件添加右键菜单

一、效果预览 二、代码 cpp文件 //listView右键菜单 void MainWindow::Rightclicklistview() {//初始化一级菜单TotalRightclick new QMenu(this);AddDevice new QMenu(this);upDevice new QAction(this);DownDevice new QAction(this);Delete new QAction(this);EditDev…

压缩包里的文件名可以这样隐藏起来

我们知道&#xff0c;压缩后的文件如果有保密需要&#xff0c;可以给压缩包设置打开密码。 设置密码后&#xff0c;还是可以打开压缩包&#xff0c;也可以看到压缩包里面的文件名称&#xff0c;当你点击里面的文件&#xff0c;才会提示需要输入密码后才能打开文件。 如果希望加…

数据运算——逻辑运算

数据运算——逻辑运算一、逻辑运算1.通过例题掌握位模式层次上的逻辑运算2.位模式层次上的逻辑运算的应用1.**与运算使指定位复位**2.**或运算使指定位置位**3.**异或运算使指定位取反**二、移位运算1.逻辑移位2.循环移位3.算术移位算术右移算术左移举例1>.(算术右移)2>.…

KepServer EX6模拟仿真PlC数据以及点表的复制跟项目的迁移

一.模拟plc数据绑定标点 1.新建通道选择“Simulator” 右击 “连接性”》新建通道选择Simulator 填写通道名称&#xff08;自定义&#xff09; 然后一直默认设置点击下一页知道完成!!! 添加展示 2.给通道添加设备 右击通道》添加设备 设备名自定义 然后一直默认进行下一步…

[附源码]计算机毕业设计springboot人事管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

使用WPS生成二维码,手机扫码访问主机的资源

问题描述 如果我们想要使用二维码&#xff0c;包装一个链接&#xff0c;访问目标资源。 在淘宝上可以看到&#xff0c;一些网店提供制作二维码服务。其实我们自己也可以做。 原理是&#xff1a;我们把资源发送给商家&#xff0c;商家拿到后&#xff0c;将资源部署到服务器上…

ARM cortex-M4核中断实验 中断和串口

要求&#xff1a;按键触发时&#xff0c;LED灯状态取反&#xff0c;并且在串口工具打印一句话。 KEY1按键按下&#xff0c;LED1状态取反&#xff0c;串口工具打印key1 down!!!! GPIO模块&#xff1a; UART模块&#xff1a; 主函数&#xff1a; 实验现象&#xff1a…