STL库常用数据结构及常见用法

(注意,这里介绍的用法只是常用的,但是不完全,如若有错,可以更改)

一.vector

可以看成变长数组,长度可变。

1.定义

vector<type>vi;

2.尾部增加元素

vi.push_back(el);

3.删除尾部元素

vi.pop();

4.修改某个位置元素

vi[i]=el;

5.查找某个位置元素

vi[i]

6.在某个位置插入元素

vi.insert(a.begin()+pos,el);

7.判空

vi.empty()

8.长度

vi.size()或者vi.length()

9.迭代遍历

for(auto it=vi.begin();it!=vi.end();it++)

或者for(vector<int>::iterator it=vi.begin();it!=vi.end();it++)

或者for(int i=0;i<vi.length();i++)

二.string 

1.定义

string s="HAHAHAHA"

2.尾部插入字符

s.push_back('a');

3.在尾部增加字符串

s+="HAHAHAHA";

4.在中间某处增加字符

s.insert(pos,'a');//pos为位置

5.删除某个区间

s.erase(pos,len);//pos为位置,len为长度

6.修改某个区间

s.replace(pos,len,s1);//pos为开始的位置,len为替换的长度,s1为要替换成的字符串

7.查找某个区间的内容

s.substr(pos,len);

8.在字符串中查找某个子串的位置

s.find(s1);//s1为要找的串,如果找到就返回索引,找不到返回-1

9.长度

s.length()或者s.size();

10.判空

s=="";

11.迭代

for(auto it=s.begin();it!=s.end();it++)

或者for(int i=0;i<s.length();i++)

三.set 

1.定义

set<type>st;

2.增加元素

st.insert(el);

3.删除元素

st.erase(st.begin()+i);

4.长度

st.size();

5.判空

st.empty();

6.查找

st.find(el);//不成功返回st.end()

7.迭代

for(auto it=vi.begin();it!=vi.end();it++)

或者for(vector<int>::iterator it=vi.begin();it!=vi.end();it++)

8.自定义比较函数(适用于元素为结构体的set集合)

struct Date {
    int year,month,day;
    Date(int a,int b,int c) {
        year=a;
        month=b;
        day=c;
    }
    friend bool operator<(const Date& d1,const Date& d2){//设置排序 
        if(d1.year!=d2.year)return d1.year<d2.year;
        else{
            if(d1.month!=d2.month)return d1.month<d2.month;
            else return d1.day<d2.day;
        }
    }
};
set<Date>date;

四.map 

1.定义

map<type1,type2>mp;

2.查找元素

mp[key];

或者mp.find(key);//返回的是元素的迭代器

3.插入元素

mp[key]=value;

4.删除元素

mp.erase(it);//it为该元素的迭代器

5.二维map 

map<type1,map<type2,type3>mp;

之后可以通过mp[key1][key2]访问元素

6.迭代

for(auto it=mp.begin();it!=mp.end();it++){

cout<<it->first<<" "<<it->second<<endl;//first为key,second为value

}

五.queue

1.定义

queue<type>q;

2.在末尾插入元素

q.push(el);

3.删除第一个元素

q.pop();

3.长度

q.size();

4.判空

q.empty();

5.得到第一个元素

q.front();

6.得到最后一个元素

q.back();

六.priority_queue

 定义

//默认降序队列

priority_queue<type>q;

//升序队列,中间的参数为容器类型,也可改成deque<type>

priority_queue <type,vector<type>,greater<type> > q;

//降序队列

priority_queue <type,vector<type>,less<type> >q;

1.访问队头元素

q.top();

2.弹出队头元素

q.pop();

3.在队尾插入元素

q.push();

4.判空

q.empty();

5.长度

q.size();

6.自定义比较函数(与set集合那里一样,在结构体里边定义,这里就不赘述了)

七.stack

1.定义

stack<type>st;

2.获取栈顶的值

st.top();

3.将元素压至栈顶

st.push();

4.将栈顶元素挪出去

st.pop();

5.栈的大小

st.size();

6.判空

st.empty();

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

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

相关文章

3d模型怎么取消光标轴定位---模大狮模型网

取消光标轴定位可以帮助您将3D模型的旋转、缩放和移动操作重置为全局坐标系。不同的3D建模软件可能有不同的方法来取消光标轴定位。以下是一般情况下在常见的3D建模软件(例如Blender、Maya、3ds Max等)中取消光标轴定位的方法&#xff1a; Blender中取消光标轴定位&#xff1a;…

【Canvas技法】图解绘制圆弧的重要函数 arc(x,y,r,startAngle,endAngle,clockWise)

【一图释疑】 【绘制上图用代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>Html5/Canvas中绘制圆弧的重要函数 arc(x,y,r,startA…

2024.4.1-day06-认识 CSS(三大特性、引入方式)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; day06-认识 CSS(三大特性、引入方式) 文章目录 day06-认识 CSS(三大特性、引入方式)作业…

Chatgpt掘金之旅—有爱AI商业实战篇|内容策展业务|(八)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业内容策展业务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。随着…

JavaScript - 你知道Ajax的原理吗?如何封装一个Ajax

难度级别:中高级及以上 提问概率:75% 想要实现Ajax,就需要创建它的核心通信对象XMLHttpRequest,通过核心对象的open方法与服务端建立连接,核心对象的send方法可以将请求所需数据发送给服务端,服务端接收到请求并做出响应,我们通过核心对象…

【JS获取宽高】JavaScript获取浏览器、元素、屏幕的宽高尺寸

原文链接&#xff1a;JavaScript获取浏览器、元素、屏幕的宽高尺寸 原文讲得非常详细&#xff0c;在此分享和记录&#xff01;

linux 配置pg官方镜像

针对linux 系统没有对应pg版本 1、编辑 PostgreSQL 的源列表文件 sudo nano /etc/apt/sources.list.d/pgdg.list 2、使用 PostgreSQL 官方的镜像源地址 deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main 3、导入 PostgreSQL 的 GPG 公钥&#xff1a; wget --quie…

Python操作Neo4j数据库

建立Neo4j链接 !pip install neo4j pyahocorasick numpy pandas --no-warn-script-location定义数据操作对象 from neo4j_driver import Neo4jConnection, Node链接并查看节点数量 conn Neo4jConnection(neo4j://localhost:7687/, neo4j, Lorne2022)conn.create(Node("Pe…

Linux:冯·诺依曼结构 OS管理机制

Linux&#xff1a;冯诺依曼结构 & OS管理机制 冯诺依曼结构OS管理机制OS对下层硬件的管理OS对上层用户的服务 冯诺依曼结构 我们常见的计算机&#xff0c;比如笔记本&#xff0c;台式电脑。以及一下不常见的计算机&#xff0c;比如服务器&#xff0c;几乎都遵循冯诺依曼体…

积木-蓝桥每日真题

0积木 - 蓝桥云课 (lanqiao.cn) 题目描述 小明用积木搭了一个城堡。 为了方便&#xff0c;小明在搭的时候用的是一样大小的正方体积木&#xff0c;搭在了一个n行m列的方格图上&#xff0c;每个积木正好占据方格图的一个小方格。 当然&#xff0c;小明的城堡并不是平面的&#x…

说说对WebSocket的理解?应用场景?

一、是什么 WebSocket&#xff0c;是一种网络传输协议&#xff0c;位于OSI模型的应用层。可在单个TCP连接上进行全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通迅 客户端和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c…

【LeetCode热题100】【栈】柱状图中最大的矩形

题目链接&#xff1a;84. 柱状图中最大的矩形 - 力扣&#xff08;LeetCode&#xff09; 要找最大的矩形就是要找以每根柱子为高度往两边延申的边界&#xff0c;要作为柱子的边界就必须高度不能低于该柱子&#xff0c;否则矩形无法同高&#xff0c;也就是需要找出以每根柱子为高…

学习嵌入式可以胜任哪一些行业?

嵌入式技术之应用范围甚广&#xff0c;其多见于机器人、无人机、医疗器械以及军工等领域&#xff0c;为学习者带来诸多广泛之职业机遇。嵌入式工程师于此诸领域中扮演关键之角色&#xff0c;负责解决硬件平台适配等诸问题&#xff0c;以为创新提供支撑之力。 虽嵌入式技术与日…

2024年中国金融科技(FinTech)行业发展洞察报告

核心摘要&#xff1a; 金融监管体系的改革推动金融科技行业进入超级监管时代&#xff0c;数据要素应用与金融场景建设成为如今行业关注的重要领域&#xff0c;为金融机构提供以业务需求为导向的技术服务成为“厚积成势”阶段行业发展的新目标&#xff0c;市场参与者的“业技融…

管易云和金蝶云星空接口打通对接实战

管易云和金蝶云星空接口打通对接实战 对接系统&#xff1a;管易云 管易云是金蝶旗下专注提供电商企业管理软件服务的子品牌&#xff0c;先后开发了C-ERP、EC-OMS、EC-WMS、E店管家、BBC、B2B、B2C商城网站建设等产品和服务&#xff0c;涵盖电商业务全流程。 接入系统&#xff1…

idea导入eclipse项目记录

eclipse虽然是免费的但是着实难用(可能是自身不熟悉&#xff09;&#xff0c;就连看class的源代码还得去市场下个插件&#xff0c;结果还搜索不到。对于习惯 IntelliJ 全家桶的的用户来说&#xff0c;用eclipse真的太痛苦。所以迁移eclipse到idea。 本来想着会有困难&#xff…

加州大学欧文分校英语基础语法专项课程02:Questions, Present Progressive and Future Tenses 学习笔记

Questions, Present Progressive and Future Tenses Course Certificate 本文是学习 Questions, Present Progressive and Future Tenses 这门课的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 Questions, Present Progressive and Future TensesWeek 01: …

017——DS18B20驱动开发(基于I.MX6uLL)

目录 一、 模块介绍 1.1 简介 1.2 主要特点 1.3 存储器介绍 1.4 时序 1.5 命令 1.5.1 命令大全 1.5.2 命令使用 1.5.3 使用示例 1.6 原理图 二、 驱动程序 三、 应用程序 四、 测试 一、 模块介绍 1.1 简介 DS18B20 温度传感器具有线路简单、体积小的特点&…

关于MessagePack的一些记录

昨天记录了ProtoBuf的一些记录&#xff0c;然后因为项目中用的是MessagePack&#xff0c;就大概了解了一下MessagePack的一些原理&#xff0c;然后做下简单记录。 MessagePack从数据上来看整体是不错的&#xff0c;空间也有较大节省&#xff0c;序列化和反序列化的速度都非常优…

我去,PMP原来不是所有人都能报!

很多人可能觉得PMP的报名条件很复杂&#xff0c;又是经验要求&#xff0c;又是学历要求的&#xff0c;网络上关于PMP报名条件说的层出不穷&#xff0c;今天给大家统一一下&#xff0c;报名PMP究竟需要什么条件&#xff1a; 官方报考条件&#xff1a; 一、报名考生必须具备35小…