【C++】泛型算法(四)使用顺序性容器

一、顺序性容器

顺序性容器用来维护一组有序、类型相同的元素。
主要是:vector和list。

1.vector

  1. vector是用一块连续的内存存放数据;
  2. vector进行随机访问,效率比较高(适合数列);
  3. vector对于插入和删除操作效率较低:这是由于vector内的每个元素都被存储在距离起始点固定的偏移位置,当进行插入操作时,如果插入的位置不是vector的尾端,那么就需要把插入位置右端的数据复制一份在右移;删除操作同理。

2.list

  1. list容器是双向链接(double-linked);
  2. 和vector的区别:并非用连续内存空间存储数据
  3. list容器中每个元素包含三个部分:value、back(指向前一个元素)、front(指向下一个元素);
  4. 对list进行任意位置的插入和删除操作,效率较高。

3.deque

  1. deque容器和vector类似,都是以连续内存存储元素;
  2. deque容器和vector区别:deque可以进行最前端元素的插入和删除操作。

二、头文件

#include <vector>
#include <list>
#include <deque>

三、定义顺序性容器对象的方式

1.产生空的容器

list<string> slist;
vector<int> ivec;

2.产生特定大小的容器

每个元素都以其默认值作为初值。
(int 和double这类语言内置的算术类型,其默认值为0)

list<string> ilist(1024);
vector<int> svec(32);

3.定义特定大小的容器,并为每个元素指定初值

vector<int> ivec(10-1);
list<string> slist(16,“unassigned”);

4.通过数组产生容器,并指定初值的元素的范围

int ia[8] = { 1,2,3,4,5,6,7,8 };
vector<int> fib(ia, ia + 8);

5.由某个容器产生出新容器

复制原容器内的元素,作为新容器的初值:

list<string> slist;//空容器
//填充slist...
list<string> slist2(slist);//将slist复制给slist2

四、容器末尾进行写入(插入)和弹出(删除)操作

  • push_back()和pop_back();
  • list和deque(不包括vector)还提供了push_front()和pop_front();
  • 读取最前端和最末端的元素应该使用front()和back().
vec.push_back(1);//末端写入一个元素1
vec.pop_back();//删除最后一个元素

另:
每个容器除了拥有通用的插入函数insert(),还支持其四种变形;除拥有通用的删除函数erase(),还支持其两种变形。(略)

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

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

相关文章

32:TX Text Control ActiveX/ASP.NET/WinForms/WPF Crack

TX Text Control ActiveX 32.0 添加操作“普通”样式表的能力。 2023 年 9 月 14 日 - 15:38新版本 特征 脚注- 在文档中插入与 Microsoft Word 兼容的脚注。脚注是一种文字处理功能&#xff0c;允许用户在页面底部插入附加信息。 可编辑的[普通]样式表- 添加了操作[普通]样式的…

为什么tomcat要自定义线程池实现?

背景 最近在研究tomcat调优的问题&#xff0c;开发人员做过的最多的tomcat调优想必就是线程池调优了&#xff0c;但是tomcat并没有使用jdk自己的线程池实现&#xff0c;而是自定了了线程池&#xff0c;自己实现了ThreadPoolExecutor类位于org.apache.tomcat.util.threads包下 …

入门python

[NOIP2006 普及组] 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查&#xff0c;为了实验的客观性&#xff0c;他先用计算机生成了 N N N 个 1 1 1 到 1000 1000 1000 之间的随机整数 ( N ≤ 100 ) (N\leq100) (N≤100)&#xff0c;对于其中重复的数字…

服务器为什么要一直开机?

很多人在选择服务器的时候会想要省钱&#xff0c;然后就想要自己搭建一个服务器&#xff0c;其实服务器呢是需要24小时一直开机的&#xff0c;一般服务器的工作时间是3-5年&#xff0c;它们第一次开机后就会一直到机器故障淘汰才会关机哦&#xff0c;这是为什么呢&#xff1f;今…

TikTok的全球影响:跨文化、跨国界的短视频文化

随着TikTok的崛起&#xff0c;短视频文化正在以前所未有的方式迅速传播&#xff0c;跨足了不同国家和文化的边界。本文将探讨TikTok的全球影响&#xff0c;以及它如何促进了跨文化交流和文化融合。 短视频&#xff1a;跨越语言和文化的沟通工具 TikTok的短视频格式具有独特的跨…

步步为营,如何将GOlang引用库的安全漏洞修干净

文章目录 引场景构建第一步、直接引用的第三方库升级修复策略1.确认是否为直接引用的第三方库2.找到需要升级的版本是否为release版本 第二步、间接引用的第三方库升级修复策略那么问题来了&#xff0c;我们这么间接引用库的对应的直接引用库是哪个呢&#xff1f; &#xff08;…

Vue构建SPA项目实现路由

目录 前言 一、Vue CLI简介 1.什么是Vue CLI 2.Vue CLI的特点 二、SPA项目搭建 1.安装Vue CLI 2.使用脚手架vue-cli来构建项目 ​编辑 3.项目结构说明 4.什么是*.vue文件 三、基于SPA完成路由并嵌套路由 1.基于SPA完成路由 1. 1在src下的components 创建自定义组件…

vue项目升级webpack

vue项目升级webpack 目录 1. vue项目中影响webpack版本的是什么 2.理解package.json中库前缀^和~区别 3.升级webpack4到5操作 1. vue项目中影响webpack版本的是什么 答案是&#xff1a;vue/cli-service版本 2.理解package.json中库前缀^和~区别 x.y.z x代表大版本&#xf…

Spark-3.2.4 高可用集群安装部署详细图文教程

目录 一、Spark 环境搭建-Local 1.1 服务器环境 1.2 基本原理 1.2.1 Local 下的角色分布 1.3 搭建 1.3.1 安装 Anaconda 1.3.1.1 添加国内阿里源 1.3.2 创建 pyspark 环境 1.3.3 安装 spark 1.3.4 添加环境变量 1.3.5 启动 spark 1.3.5.1 bin/pyspark 1.…

化工DCS/SIS/MIS系统时钟同步(NTP服务器)建设

化工DCS/SIS/MIS系统时钟同步&#xff08;NTP服务器&#xff09;建设 化工DCS/SIS/MIS系统时钟同步&#xff08;NTP服务器&#xff09;建设 目前计算机网络中各主机和服务器等网络设备的时间基本处于无序的状态。 随着计算机网络应用的不断涌现&#xff0c;计算机的时间同步问…

vue2中年份季度选择器(需要安装element)

调用 <!--父组件调用--><QuarterCom v-model"quart" clearable default-current/> 组件代码 <template><div><span style"margin-right: 10px">{{ label }}</span><markstyle"position:fixed;top:0;bottom:0…

EPLAN_001#常用功能(一)

一、栅格设置、背景颜色设置 二、插入设备图标&#xff08;快捷键 Insert&#xff09; 按TAB旋转方向 三、 通过左CTRLENTER输入 四、移动属性文本、复制格式 CTRLB 可以移动设备图形中的相关文本&#xff08;或者右键—文本—移动属性文本&#xff09; 很对多个文本的&#xf…

干货 | 汽车行业研发效能提升的挑战与实践案例

在 9 月 15 日的第七届 CSN 大会上&#xff0c;思码逸研发效能专家王艳萍受邀分享了《汽车行业研发效能提升的挑战与实践案例》。演讲包含了思码逸对多家汽车企业服务过程中总结出的行业痛点、解决方案&#xff0c;以及实践案例。 以下为演讲实录&#xff1a; 思码逸与很多知名…

spring的ThreadPoolTaskExecutor装饰器传递调用线程信息给线程池中的线程

概述 需求是想在线程池执行任务的时候&#xff0c;在开始前将调用线程的信息传到子线程中&#xff0c;在子线程完成后&#xff0c;再清除传入的数据。 下面使用了spring的ThreadPoolTaskExecutor来实现这个需求. ThreadPoolTaskExecutor 在jdk中使用的是ThreadPoolExecutor…

[RK3588-Android12] 双HDMI+喇叭Speak同音问题

问题描述 因为上层的音频策略&#xff0c;导致双路HDMI和喇叭&#xff0c;声音会被切换为单路出声音&#xff0c;以下修改将RK3588-Android12 双路HDMI和喇叭播放声音同时出声音。 解决方案&#xff1a; 1.frameworks\base\services\core\java\com\android\server\WiredAccesso…

API接口:概述、设计、应用与未来趋势

一、API接口概述 API&#xff0c;全称应用程序接口&#xff0c;是一种软件程序之间的通信方法。API接口在互联网开发中扮演着重要角色&#xff0c;允许不同的应用程序相互交流和共享数据。API定义了一套标准的通信协议&#xff0c;使得开发人员能够使用特定的函数、方法或协议…

快速排序模拟实现

快速排序&#xff0c;时间复杂度为O&#xff08;NlogN&#xff09;&#xff0c;属于排序中相对快的那一列&#xff0c;以下是快排的模拟实现&#xff1a; 法一&#xff1a;左右指针交换法 void swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; }//交换函数int getmid(int…

Python实现MYSQL蜜罐

1 LOAD DATA INFILE介绍 首先开启一个Mysql&#xff0c;看一下mysql是如何读取主机文件的。 1.1 linux搭建mysql 1&#xff09;docker运行mysql 2&#xff09;启动Mysql docker run -itd…

【GO】网络请求例子

post请求;multipart/form-data类型 // 构建请求参数requestData : map[string]interface{}{"gb": "","code": "","reMemberInfo": map[string]interface{}{"shi": "","…

【开发工具】idea 的全局搜索快捷键(Ctrl+shift+F)失效

文章目录 前言1. 取消 输入法的快捷键&#xff08;推荐使用&#xff09;2.更改 idea的快捷键3. 热键占用总结 前言 当你发现在idea 中看到用于全局搜索的快捷键就是 CtrlshiftF&#xff0c;可是怎么按都不管用的时候&#xff0c;你就不要再执着于自己的操作继续狂点电脑按键了…