C++标准模板库STL (未完)

news2024/11/17 1:49:31

概述

STL=standard template library是 C++ 标准库的一部分,无需单独安装,只需#include 头文件
什么是模板?见c++面向对象程序设计中模板一节

顺序性容器

vector 向量 变长数组

声明

vector<类型名> 变量名[数组长度];

类型名可以是已有类型或自定义结构体,也可以是STL容器。
如二维数组:在两个方向上都是变长的

vector<vector<int> > v;//注意:> >之间要加空格

访问

下标访问 v[i]
迭代器访问

vector<int>::iterator it=v.begin();
it[i];
*(it+i)

操作函数

  • v.push_back(x) 在vector后追加元素x
  • v.pop_back() 删掉最后一个元素
  • v.size() 返回vector的长度,时间复杂度O(1)
  • v.clear() 清空容器,复杂度O(n)
  • v.insert(要插入的地址,要插入的元素) 地址要写v.begin()+i的形式,其他的元素依次后移
  • v.erase(v.begin()+i)删除某位置的元素
  • v.erase(v.begin()+i,v.begin()+j)删除某区间的元素,左闭右开

在这里插入图片描述

deque 双端队列

list 双向循环链表

关联式容器

每一个元素都有一个键值(key),对于二元关联容器,还拥有实值(value),容器中的元素顺序不由程序员决定,有set(集合)和map(映射)这两大类,它们均以RB-Tree(red-black tree,红黑树)为底层架构。

set 集合

自动递增排序且不含重复元素
声明

set<类型名> 变量名;

访问
只能通过迭代器,只能依次枚举,不能下标访问
除了vector和string之外的STL容器都不支持*(it+i)的访问方式
常用函数
s.insert(x) 插入元素x
s.find(x) 返回的是迭代器(指针)
s.erase(it) O(1)删除某元素
s.erase(x) O(logN)删除某元素
s.erase(iteratorBegin , iteratorEnd)删除一个区间内的所有元素,左闭右开
s.size() O(1)获取元素个数

multiset 可重集合是set的升级版,元素可以重复

map 映射

在构造时需要写两个参数类型,前者对应key值,后者对应value值,因为有两个参数,因此在插入元素的时候需要配合对组pair进行插入

容器适配器

stack 堆栈

先进后出FILO,只能在一端操作

queue 队列

先进先出FIFO,不能遍历,只能尾进头出

priority_queue 优先队列

默认由小到大排列

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

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

相关文章

社交商务时代已经到来,ss客服帮您抓住风口

社交商务时代已经到来&#xff0c;ss客服帮您抓住风口 近年来&#xff0c;社交媒体商务的概念已成为一股强大的力量。通过将社交媒体平台的影响力和影响力与在线购物的便利性相结合&#xff0c;它正在彻底改变企业与客户互动和销售产品或服务的方式。 什么是社交商务&#xf…

MyBatisPlus代码生成器插件

1、下载IDEA插件&#xff1a;MybatisPlus。 2、使用插件生成代码 首先点击IDEA导航菜单上的Other选项&#xff0c;然后进行数据库和代码生成器的配置&#xff1a; 数据库配置&#xff1a; 代码生成器配置&#xff0c;然后点击code generator&#xff1a; 最会插件会按照配置…

Timeout while checking target RAM, RAMCode did not respond in time

问题 使用jlink烧入gd32f450时&#xff0c;jlink提示错误Timeout while checking target RAM, RAMCode did not respond in time; 解决办法 原因是RAM的地址范围错误&#xff0c;默认选择gd32f450vi的ram大小是512k&#xff0c;但是该芯片中的ram并不连续&#xff0c;其中64…

C++ 动态内存

了解动态内存在 C 中是如何工作的是成为一名合格的 C 程序员必不可少的。C 程序中的内存分为两个部分&#xff1a; 栈&#xff1a;在函数内部声明的所有变量都将占用栈内存。堆&#xff1a;这是程序中未使用的内存&#xff0c;在程序运行时可用于动态分配内存。 很多时候&…

【C/C++】类成员函数指针 定义 使用方法

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

使用conda虚拟环境,Jupyter Notebook 链接不上 kernel

1&#xff0c;检查 ipykernel 和 ipython 是否一致 输入pip list 或者conda list检查一下相应库的版本是不一致 不一致的话&#xff0c;可以更新这两个库的版本&#xff1a;pip install --upgrade 库名 2&#xff0c;看控制台的报错&#xff0c;如果是报404&#xff0c;内核找不…

leetcode 145. 二叉树的后序遍历

2023.6.24 继上一题前序遍历&#xff0c;这道后序遍历就很容易了&#xff0c;把递归的顺序稍微改一下就行。 递归法&#xff1a; class Solution { public:void travelsal(TreeNode* cur , vector<int>& ans){if(cur nullptr) return;travelsal(cur->left , an…

如何设计真正高性能高并发分布式系统?

1 、引子 软件复杂性来源于几个方面&#xff1a;高并发高性能、高可用、可扩展、低成本、低规模、可维护、安全等。架构演化、发展都是为了试图降低复杂性&#xff1a; 高并发、高性能&#xff1a;互联网系统特点&#xff0c;用户量大&#xff0c;请求量大&#xff0c;高并发高…

NLP学习笔记(二)

文章目录 &#xff08;一&#xff09;负采样&#xff08;二&#xff09;GloVe1.带全局语料库的跳元模型2.GloVe模型3.问题4.跳元模型与GloVe模型的比较 &#xff08;三&#xff09;问题1.参数初始化2.梯度下降3.下游任务4.句法信息5.似然估计6.词向量表示 &#xff08;一&#…

MySQL基础篇(day04,复习自用)

MySQL第四天 单行函数内容练习 聚合函数内容练习 单行函数 内容 #第七章 单行函数 SELECT ABS(-123),ABS(32),SIGN(-23),SIGN(43),PI(),CEIL(32.32),CEILING(-43.23),FLOOR(32.32), FLOOR(-43.23),MOD(12,5) FROM DUAL;#取随机数 SELECT RAND(),RAND(),RAND(10),RAND(10),RAND…

亚马逊开店卖什么好呢?有哪些热销产品推荐?

现如今提起跨境电商&#xff0c;人们首先会想到亚马逊平台&#xff0c;作为利润的核心&#xff0c;其发展与优势都是有目共睹的&#xff0c;所以引来了大批的创业者前往亚马逊开店&#xff0c;然而在亚马逊开店后&#xff0c;首先想到的问题就是卖什么产品好&#xff1f;什么产…

推荐一款轻量级全栈式开源测试平台!

1、RunnerGo介绍 今天给大家介绍一个好用的测试平台&#xff1a;RunnerGo&#xff08;开源&#xff09;。RunnerGo是一款轻量级、全栈式的测试平台&#xff0c;支持接口管理、场景管理、性能测试、自动化测试等功能。与市面上的性能测试工具不同的是RunnerGo基于go语言研发&am…

三元表达式空指针问题

三元表达式空指针问题 问题描述&#xff1a; 如下代码标红处出现空指针异常&#xff1a; 测试及定位问题&#xff1a; 情景一&#xff1a;将num赋值为20&#xff0c;将flag赋值为true 正常输出10 情景二&#xff1a;将num赋值为null&#xff0c;将flag赋值为true 此时可以看到…

域渗透——vCenter安装及使用

简介 VMware vCenterServer 提供了一个可伸缩、可扩展的平台&#xff0c;为 虚拟化管理奠定了基础。VMware vCenter Server&#xff08;以前称为 VMware VirtualCenter&#xff09;&#xff0c;可集中管理 VMware vSphere 环境&#xff0c;与其他管理平台相比&#xff0c;极大…

C妈妈直播监控大屏页面--formDataSign参数逆向分析

内容仅供参考学习 欢迎朋友们V一起交流&#xff1a; zcxl7_7 详情请看专栏中的文章

【单片机】STM32单片机读取旋转编码器,TIM定时器编码器模式捕获,程序

文章目录 旋转编码器介绍主程序逻辑直接检测用外部中断检测下降沿定时器直接解码旋转编码器STM32中文参考手册V10.pdf定时器的编码器模式TIM2定时器编码器程序TIM3定时器编码器程序TIM4定时器编码器程序 旋转编码器介绍 旋转编码器简单来说&#xff0c;就是会输出2个PWM&#…

d2l_第八章学习_现代卷积神经网络

参考&#xff1a; d2l x.1 AlexNet 研究人员认为&#xff1a; 更大更干净的数据集或是稍加改进的特征提取方法&#xff0c;比任何学习算法带来的进步大得多。认为特征本身应该被学习&#xff0c;即卷积核参数应该是可学习的。创新点在于GPU与更深的网络&#xff0c;使用ReLU…

问题收藏夹——使用mybatisPlusJoin报 NoSuchPropertyException错误

出现问题代码&#xff1a; 报错&#xff1a; 解决方法&#xff1a; MPJLambdaQueryWrapper 类有问题&#xff0c;应该用MPJLambdaWrapper&#xff0c;去看了作者官网&#xff0c;发现已经没有这个类的用法了&#xff0c;但是还能用这个类&#xff08;Copilot直接给我补全这个…

SNMP 计算机网络管理 实验2(三) SNMP服务与常用网管命令之任务五:查看端口流量及实验小结

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;(*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &am…

人工智能 --- 吉布斯采样

贝叶斯网络如下图所示&#xff0c;包含 4 个随机变量&#xff0c;每个变量都只有表示是否的两个值。请用吉布斯采样方法回答以下问题。 假设观察到 &#x1d445; &#x1d45f;, 初始化样本中其他变量的赋值为 &#x1d436; &#x1d450;, &#x1d446; −&#x1d460…