
C++数据结构
文章平均质量分 61
以c++中的数据结构为主,有vector,树,图等,适合新手入门,仅以收藏。
Alice-柯
程序媛
展开
-
【C++】一题弄懂队列
首先,普通的队列queue就不再赘述讲述一下双端队列deque其实这两者的本质类似。原创 2022-10-11 22:31:53 · 570 阅读 · 0 评论 -
链表——一题弄懂
idx[i]表示能力为i的人的所在位置,vis[i]表示位置i的人所在的队伍,m[i].pre和m[i].nxt分别为上一个结点的位置和下一个结点的位置。原创 2022-10-11 22:12:16 · 248 阅读 · 0 评论 -
树的基本概念
作者优快云:AliceK1008作者洛谷博客:AliceK求关注qwq话不多说,这就开始文章目录图的基本概念有向图无向图点的度数连通性树二叉树斜树满二叉树完全二叉树链表图的基本概念一个图就是一些顶点的集合,这些顶点通过一系列边结对(连接)。顶点也称为交点和节点,顶点也称为链接。有向图有向图就是两个端点不是集合概念而是有顺序的,分别称作起点和终点。例如图中的4->5边,4是起点,5是终点。无向图两端无顺序,可以顺着或逆着就叫做无向图,但是为了方便一般我们会用双向有向边来表原创 2021-08-23 08:38:27 · 869 阅读 · 0 评论 -
图的概念和存储
文章目录图的基本概念定义无向图有向图带权图完全图顶点的度邻接点路径、路径长度、回路连通图图的存储邻接矩阵邻接表邻接矩阵邻接表邻接矩阵程序实现图的基本概念定义图是有顶点V的集合和边E的集合组成的二元组记G=(V,E)。无向图顶点之间没有方向。有向图顶点之间的边有方向。带权图顶点之间的边为某种含义的数值,如两点间的距离或花费等等。完全图图中每两个顶点之间都存在一条边对于无向图来讲,边的总数为n*(n-1)/2。对于有向图来讲,边的总数为n*(n-1)。顶点的度图中连接该顶点原创 2021-08-25 13:46:02 · 214 阅读 · 0 评论 -
链表整体概述
链表一般会有一个结构体表示一个节点,然后节点之间首尾相接的结构就叫链表。struct node { int val; node *nxt;};这种只包含下一个元素,对于查找上一个元素需要将整个链表再遍历一遍,为了使用方便,也有双向或者循环链表的说法,就可以不单找到它的下一个节点,也可以找到它前一个节点。struct node { int val; node *nxt, *pre;};...原创 2021-08-25 13:49:15 · 138 阅读 · 0 评论 -
栈stack
文章目录元素访问入栈出栈检测是否为空发返回元素个数stack的常用函数# 栈 **栈是一个先进后出,后进先出的数据结构**在c++中优先队列的头文件时,定义方法与其他STL容器相同(比如队列、向量、映射表等)。```cppstack q;```T1可以是任何数据类型(如int、double、string……)元素访问只能通过top()来访问栈顶元素入栈push(x);即可将x入栈出栈pop()弹出栈顶元素检测是否为空用empty()函数检测栈是否为空,返回true为空,否原创 2021-08-23 22:16:45 · 161 阅读 · 0 评论 -
优先队列priority queue
文章目录优先队列元素访问入队出队检测是否为空发返回元素个数priority_queue元素优先级的设置结构体的优先级设置优先队列在c++中优先队列的头文件时,定义方法与其他STL容器相同(比如栈、向量、映射表等)。Priority_queue<T1> q;T1可以是任何数据类型(如int、double、string……)元素访问和队列不一样的是,优先队列没有front()和back()函数,只有top函数,可以访问对手元素(堆顶元素),也就是优先级最高的元素。#include&原创 2021-08-23 22:15:11 · 318 阅读 · 0 评论 -
队列queue
文章目录队列队列是一个先进先出的数据结构元素访问入队出队检测是否为空发返回元素个数queue的常用函数队列队列是一个先进先出的数据结构在c++中队列的头文件时,定义方法与其他STL容器相同(比如栈、向量、映射表等)。queue<T1> q;T1可以是任何数据类型(如int、double、string……)元素访问首个元素是front(),尾元素为back()入队push(x);即可将x入队出队pop()即可让队首出队。检测是否为空用empty()函数检测队列是否原创 2021-08-23 22:14:13 · 310 阅读 · 0 评论 -
字符串string
文章目录字符串operator+=compare operator(比大小)长度插入insert(post.string)insert(it,it2,it3)删除元素方法删除单个元素删除多个元素清空数据返回元素string::npos查找方法更改元素字符串在c++中,构造一个string的方法就是直接在string后面写变量名。string str;注意string在头文件里。如果要初始化,可以直接给string赋值string str="abcd";operator+=在string原创 2021-08-23 22:13:19 · 403 阅读 · 0 评论 -
向量vector
文章目录向量如何定义添加元素删除尾元素获得向量长度插入元素清空元素访问方法1.通过下标访问2.通过迭代器访问删除元素删除多个元素vector函数总结向量vector正如《算法笔记》一书中提到的vetor便是“变长数组”和“长度根据需要自动改变的数组”。在c++中,vector在头文件中定义。如何定义vector<T1> v;T1可以是任何数据类型(比如int、double、string等)注意在定义二维vector时两个>号见要加空格,否则会报错。vector<v原创 2021-08-23 22:12:27 · 285 阅读 · 0 评论 -
二维映射表map
文章目录二维mapmap套setmap套map二维map众所周知vector有二维的用法,巧了map也有,而二维的map不仅能够map套map,还能map套set,map套set更容易理解,我先来介绍一下map套set,再介绍map套map吧。map套set为了方便理解,我们来举一个生活中的例子:A校有很多班级,如果我们要用set记录A校所有同学的名字难免会有重复的,那么怎么办呢?我们可以将A校所有班级进行编号,对每个班级都分别记录一个set,这样就能分辨不同班级的重名学生了。毕竟,一个班内原创 2021-08-23 22:11:17 · 1364 阅读 · 0 评论 -
映射表map
文章目录插入方法:访问方法:判断是否存在遍历映射清除元素map总结(大多数)# 映射表在c++中,我们构造一个map的方法为map<T1,T2> m;构造了一个名为m的从T1类型,到T2类型的映射T1和T2可以是char,int,string……初始的时候m是一个空映射,通过写map<int,string> m;构造了一个字符串到一个整数的映射,将字符串和整数关联起来.插入方法:在c++中通过insert在映射表中插入一组新的映射,参数是一个pair。pa原创 2021-08-23 22:10:01 · 804 阅读 · 0 评论 -
多重集合multiset
文章目录多重集合erase函数的用法删除单个元素的方法多重集合在一个集合中一个元素只能出现一次,而在多重集合中一个元素可以出现多次。一个元素在多重集合中出现的次数为这个元素的重数(或重次、重复度)。在c++中,multiset在头文件里定义,和set集合一样,这里不再过多赘述。erase函数的用法下面来看一个具体的例子multiset<int> m;m.insert(3); //添加3后为{3}m.insert(10); //添加10后为{3,10}m.ins原创 2021-08-23 22:09:13 · 1206 阅读 · 0 评论 -
集合set
文章目录集合如何使用存储集合?插入方法:查询方法:遍历元素集合的struct型集合集合中的元素不重复。如何使用存储集合?集合中的所有元素必须得是同一个类型example:可行:{1,2,3,4,5} / {“z”,“x”,“d”}不可行:{1,2,3,“zd”}头文件:定义方法:set<string> country;set<int/char/string/long……> 集合名称假设定义了: set<string> country;原创 2021-08-23 22:07:16 · 128 阅读 · 0 评论