当前位置: 首页 > news >正文

c++ list容器使用详解

list容器概念

list是一个双向链表容器,可高效地进行插入删除元素。

List 特点:

  • list不可以随机存取元素,所以不支持at.(position)函数与[]操作符。可以对其迭代器执行++,但是不能这样操作迭代器:it+3
  • 使用时包含 #include <list>  

list对象的构造函数

list同样采用模板类实现,对象的默认构造形式:list<T> listT;  如:

  1. list<int> lstInt;            //定义一个存放int的list容器。
  2. list<float> lstFloat;        //定义一个存放float的list容器。
  3. list<string> lstString;       //定义一个存放string的list容器。

注意:尖括号内还可以设置指针类型或自定义类型

list对象的带参构造函数

方式一:list(beg,end);     //将[beg, end)区间中的元素拷贝给本身。

方式二:list(n,elem);      //构造函数将n个elem拷贝给本身。

方式三:list(const list &lst); //拷贝构造函数。

list<int> lstInt1;lstInt1.push_back(1);lstInt1.push_back(2);lstInt1.push_back(3);list<int> lstInt2(lstInt1.begin(),lstInt1.end());		//1 2 3 list<int> lstInt3(5,8);							//8 8 8 8 8list<int> lstInt4(lstIntA);						    //1 2 3 

list头尾的添加移除操作

list<int> lstInt;lstInt.push_back(1);lstInt.push_back(2);lstInt.push_back(3);lstInt.push_back(4);lstInt.push_back(5);lstInt.pop_front();lstInt.pop_front();lstInt.push_front(11);lstInt.push_front(12);lstInt.pop_back();lstInt.pop_back();
// lstInt    {12, 11, 3}

list数据的读取

  1. list.front();   //返回第一个元素。
  2. list.back();  //返回最后一个元素。
list<int> lstInt;lstInt.push_back(1);lstInt.push_back(2);lstInt.push_back(3);lstInt.push_back(4);lstInt.push_back(5);int iFront = lstInt.front();	//1int iBack = lstInt.back();		//5lstInt.front() = 11;			//11lstInt.back() = 19;			//19

list与迭代器

list<int> lstInt;lstInt.push_back(1);lstInt.push_back(3);lstInt.push_back(5);lstInt.push_back(7);lstInt.push_back(9);for (list<int>::iterator it=lstInt.begin(); it!=lstInt.end(); ++it){cout << *it;cout << " ";}for (list<int>::reverse_iterator rit=lstInt.rbegin(); rit!=lstInt.rend(); ++rit){cout << *rit;cout << " ";}

list的赋值

llist<int> lstIntA,lstIntB,lstIntC,lstIntD;lstIntA.push_back(1);lstIntA.push_back(3);lstIntA.push_back(5);lstIntA.push_back(7);lstIntA.push_back(9);lstIntB.assign(lstIntA.begin(),lstIntA.end());		//1 3 5 7 9lstIntB.assign(++lstIntA.begin(),--lstIntA.end());		//3 5 7lstIntC.assign(5,8);							//8 8 8 8 8lstIntD = lstIntA;							//1 3 5 7 9lstIntC.swap(lstIntD);						//互换

list的大小

list<int> lstIntA;lstIntA.push_back(1);lstIntA.push_back(2);lstIntA.push_back(3);if (!lstIntA.empty()){int iSize = lstIntA.size();		//3lstIntA.resize(5);			//1 2 3 0 0lstIntA.resize(7,1);			//1 2 3 0 0 1 1lstIntA.resize(5);			//1 2 3 0 0}

list的插入

list<int> listA;list<int> listB;listA.push_back(1);listA.push_back(2);listA.push_back(3);listA.push_back(4);listA.push_back(5);listB.push_back(11);listB.push_back(12);listB.push_back(13);listB.push_back(14);listA.insert(listA.begin(), -1);		//{-1, 1, 2, 3, 4, 5}listA.insert( ++listA.begin(), 2, -2);	//{-1, -2, -2, 1, 2, 3, 4, 5}listA.insert(listA.begin() , listB.begin() , listB.end());	//{11, 12, 13, 14, -1, -2, -2, 1, 2, 3, 4, 5}for(list<int>::iterator it = listA.begin(); it!=listA.end(); it++){cout<< *it<<endl;}

list的删除

// demo 15-32
#include <list>
#include <vector>
#include <iostream>using namespace std;int main(void){//list 删除元素list<int> listA;listA.push_back(1);listA.push_back(2);listA.push_back(3);listA.push_back(4);listA.push_back(5);//erase 的用法list<int>::iterator itBegin=listA.begin();++ itBegin;list<int>::iterator itEnd=listA.begin();++ itEnd;++ itEnd;++ itEnd;listA.erase(itBegin,itEnd);//此时容器lstInt包含按顺序的1, 4, 5三个元素。listA.erase(listA.begin());//此时容器lstInt包含按顺序的4, 5三个元素。listA.push_back(4); // 4, 5, 4listA.insert(listA.end(), 5, 4);  //4, 5, 4, 4, 4, 4, 4, 4/*remove 删除元素*///方式一  直接调用remove 方法//listA.remove(4);//方式二   遍历然后逐个删除for(list<int>::iterator it=listA.begin(); it!=listA.end(); ){if(*it == 4){it =listA.erase(it); //相当于执行了++}else {it++;}}for (list<int>::iterator it=listA.begin(); it!=listA.end(); ++it){cout << *it;cout << " ";}system("pause");return 0;
}

list的反向排列

  1. list.reverse();     //反转链表,比如list包含1, 2, 3, 4, 5五个元素,运行此方

        法后,list就包含5, 4, 3, 2, 1元素。

list<int> listA;listA.push_back(1);listA.push_back(2);listA.push_back(3);listA.push_back(4);listA.push_back(5);listA.reverse();			//5, 4, 3, 2, 1

相关文章:

c++ list容器使用详解

list容器概念 list是一个双向链表容器&#xff0c;可高效地进行插入删除元素。 List 特点&#xff1a; list不可以随机存取元素&#xff0c;所以不支持at.(position)函数与[]操作符。可以对其迭代器执行&#xff0c;但是不能这样操作迭代器&#xff1a;it3使用时包含 #includ…...

【案例】可视化大屏

人狠话不多,直接上效果图 这里放的地图自己去实现吧,如果也想实现3D地球话,等笔者那天有心情写篇文章; 说明:script中methods部分代码是没用,可以直接删掉,根据个人情况去写, 内容:笔者也就对页面布局进行了设计,内容的填充就靠个人了 <template><div :sty…...

js制作动态表单

JS制作动态表单&#xff0c;可以通过以下步骤实现&#xff1a; HTML布局&#xff1a;在HTML中创建一个表单元素&#xff0c;并设置一个ID属性。 <form id"myForm"><label for"name">姓名&#xff1a;</label><input type"text…...

解决Kibana初始化失败报错: Unable to connect to Elasticsearch

现象&#xff1a; 原因&#xff1a; docker run生成容器的时候&#xff0c;指定elastic server时指向了localhost 为什么不能是localhost, 因为这个localhost指向的是容器本身的网络&#xff0c;而elastic用的是物理网络&#xff0c;两个网络是隔离的&#xff0c;所以如果kiba…...

流媒体服务器

市面上优秀的流媒体服务器解决方案有很多&#xff0c;比如SRS&#xff0c;Red5&#xff0c;EasyDarwin&#xff0c;nginx-rtmp&#xff0c;live555&#xff0c;mediasoup等等。 这些服务器框架各有优缺点&#xff0c;没有一款完美的流媒体服务器解决方案&#xff0c;在流媒体选…...

Java GUI小程序之图片浏览器

以下是一个简单的图片浏览器示例代码&#xff0c;它包含了图片放大缩小、拖拽、上一张/下一张查看等功能。你可以根据它进行扩展&#xff0c;提高用户体验。 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.e…...

Kafka-4.1-工作原理综述

1 Kafka工作原理详解 1.1 工作流程 Kafka集群将 Record 流存储在称为 Topic 的类中&#xff0c;每个记录由⼀个键、⼀个值和⼀个时间戳组成。 Kafka 中消息是以 Topic 进⾏分类的&#xff0c;⽣产者⽣产消息&#xff0c;消费者消费消息&#xff0c;⾯向的都是同⼀个Topic。Topi…...

Linux八股文

Linux八股文 第一章 Linux简介 Linux是一种多用户、多任务&#xff0c;支持多线程和多CPU的操作系统&#xff0c;具有免费、稳定、高效的优点&#xff0c;一般运行在大型服务器上。 1.1 常用目录 目录说明/根目录&#xff0c;有且仅有一个&#xff0c;一般只存放目录/home家目…...

SPASS-偏相关分析

基本概念 偏相关分析的任务就是在研究两个变量之间的线性相关关系时控制可能对其产生影响的变量,这种相关系数称为偏相关系数。偏相关系数的数值和简单相关系数的数值常常是不同的,在计算简单相关系数时,所有其他自变量不予考虑。 统计原理 控制一个变量和控制两个变量的偏…...

第二证券:今日投资前瞻:小米汽车引关注 全球风光有望持续高速发展

昨日&#xff0c;两市股指盘中轰动上扬&#xff0c;深成指、创业板指一度涨超1%。到收盘&#xff0c;沪指涨0.55%报3072.83点&#xff0c;深成指涨0.72%报10077.96点&#xff0c;创业板指涨0.53%报2015.36点&#xff0c;北证50指数涨2.64%&#xff1b;两市算计成交9900亿元&…...

Docker中的RabbitMQ已经启动运行,但是管理界面打不开

文章目录 前言一、解决方法方法一方法二 总结 前言 肯定有好多小伙伴在学习RabbitMQ的过程中&#xff0c;发现镜像运行&#xff0c;但是我的管理界面怎么进不去&#xff0c;或者说我第一天可以进去&#xff0c;怎么第二天进不去了&#xff0c;为什么每次重新打开虚拟机都进不去…...

自动化网络图软件

由于 IT 系统的发展、最近向混合劳动力的转变、不断变化的客户需求以及其他原因&#xff0c;网络监控变得更加复杂。IT 管理员需要毫不费力地可视化整个网络基础设施&#xff0c;通过获得对网络的可见性&#xff0c;可以轻松发现模式、主动排除故障、确保关键设备可用性等。 为…...

如何基于亚马逊云科技打造高性能的 SQL 向量数据库 MyScale

MyScale 是一款完全托管于亚马逊云科技&#xff0c;支持 SQL 的高效向量数据库。MyScale 的优势在于&#xff0c;它在提供与专用向量数据库相匹敌甚至优于的性能的同时&#xff0c;还支持完整的 SQL 语法。在这篇文章中&#xff0c;我们将阐述 MyScale 是如何借助亚马逊云科技的…...

《轻松入门!快速安装PyCharm,打造高效Python编程环境》

「Pycharm安装包和相关插件&#xff08;Windows 64位&#xff09;」https://www.aliyundrive.com/s/jByv6vjShVz 提取码: 1234 视频教程&#xff1a;https://www.douyin.com/video/7303106933521763596?previous_pageapp_code_link 第一步&#xff1a;找到一起下载的Pycharm安…...

Golang环境搭建Win10(简洁版)

Golang环境搭建Win10 Golang环境搭建(Win10)一、前言二、Golang下载三、配置环境变量3.1、配置GOROOT3.2、配置GOPATH3.3、配置GOPROXY代理 Golang环境搭建(Win10) 一、前言 Go&#xff08;又称 Golang&#xff09;是 Google 的 Robert Griesemer&#xff0c;Rob Pike 及 Ken…...

【算法每日一练]-分块(保姆级教程 篇1)POJ3648

插讲一下分块 题目&#xff1a;&#xff08;POJ 3648&#xff09; 一个简单的整数问题 前缀和往往用于静态的不会修改的区间和。遇到经常修改的区间问题&#xff0c;就要用分块或线段树来维护了。 分块算法是优化后的暴力&#xff0c;分块算法有时可以维护一些线段树维护不了的…...

【华为OD题库-026】通过软盘拷贝文件-java

题目 有一名科学家想要从一台古董电脑中拷贝文件到自己的电脑中加以研究。但此电脑除了有一个3.5寸软盘驱动器以外&#xff0c;没有任何手段可以将文件拷贝出来&#xff0c;而且只有一张软盘可以使用。因此这一张软盘是唯一可以用来拷贝文件的载体。科学家想要尽可能多地将计算…...

定量数据和定性数据

定量数据本质上是数值&#xff0c;应该是衡量某样东西的数量。 定性数据本质上是类别&#xff0c;应该是描述某样东西的性质。 全部的数据列如下&#xff0c;其中既有定性列也有定量列&#xff1b; import pandas as pdpd.options.display.max_columns None pd.set_option(e…...

【Linux】:体系结构与进程概念

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux体系结构和进程的知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入…...

react-router-dom 版本6.18.0中NavLink的api和属性介绍

React Router 是一个基于 React 的路由库&#xff0c;它可以帮助我们在 React 应用中实现页面的切换和路由的管理。而 NavLink 则是 React Router 中的一个组件&#xff0c;它可以帮助我们实现导航栏的样式设置和路由跳转。 在 React Router 版本6.18.0 中&#xff0c;NavLink…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...