目录
创新互联公司专注于网站建设,为客户提供成都网站制作、网站建设、网页设计开发服务,多年建网站服务经验,各类网站都可以开发,品牌网站制作,公司官网,公司展示网站,网站设计,建网站费用,建网站多少钱,价格优惠,收费合理。导入
一、栈stack / 队列queue / 优先级队列priority_queue
1、数据结构简介
(1)栈
(2)队列
2、定义
3、函数
二、映射map
结语
导入想必大家在写程序的过程中都遇到过一些麻烦吧?比如深搜和广搜要用到栈和队列,于是......
class Stack{
private:
int nElems, top;
int * p;
public:
Stack(int n){...}
Stack(){...}
void push(int a){...}
void pop(){...}
void printStack(){...}
void size(){...}
};
class Queue{
......
};
但是,实际上,C++的STL标准库就为我们提供了很多全类型通用的诸如栈、队列、集合等常用数据结构。接下来,小编将一一介绍这些。
一、栈stack / 队列queue / 优先级队列priority_queue 1、数据结构简介众所周知,栈、队列、优先级队列都是比较常用的数据结构。接下来,小编将先介绍一下这些结构的用法(老手可以跳过了)
(1)栈栈(stack)是一种先进后出的数据结构。什么叫先进后出呢?看图。
图1
如图1,这是一个容量为5的空栈,栈顶在最下边。在图2中,我们往栈顶插入了一个元素14,栈顶上移一个单位;
图3图4
然后,我们又依次插入了45和11两个元素(图3)。
最后,从栈顶依次弹出三个元素,得到出栈序列114514( bushi
(2)队列先进先出的序列,没什么好说的
2、定义通常,STL标准库的数据结构定义都是这样的:
数据结构类型<存储类型>结构名
例如,要定义一个名为s1,存储整型的栈,则代码为:
#includestacks1;
注意:在使用STL库函数时,一定要先插入头文件,如栈的头文件为stack,队列为queue等,当然你也可以直接用万能头文件bits/stdc++.h,这样就当我没说好了qwq
3、函数用途:往结构内插入数据,例:
stacks1;
s1.push(233);
当然,这里的stack也可以换成queue或priority_queue等,后文不再赘述
其余常用函数用法如下:
stacks1;
queueq1;
s1.pop() 或 q1.pop() //从一定位置(栈顶、队头)取出元素
s1.top() 或 q1.front() //获取栈顶或队头元素
s1.size()或 q1.size() //获取结构内元素数量
二、映射map写程序的过程中,我们经常需要保存一个string类型的用户名和用户的数据,于是我们的代码通常会这么写:
#define MaxN 233
struct Person{
string name;
int age;
}m[MaxN];
int find(string s){
for(int i = 0; i< MaxN; i++)
if(m[i].name == s) return i;
return -1;
}
为了直到名字s对应的下标或数据,我们通常会写一个find函数,这就让我们的代码平添了五行,非常不舒服 (bushi) 那有没有一种可能,我们的代码可以写成这样呢?
m["233"] = 0;
cout<< m["233"];
这里,我们使用字符串作为下标,用中括号访问一个整形数据,还做了修改和输出。
若是在平常,这种代码肯定是不存在的(除非你有这个闲工夫心思去重载运算符)
但,是!今天,时代变了!我们可以写出下面几行代码:
#include
这里,我们导入了头文件map,然后我们用一种奇怪的方式访问到了以字符串作为下标的数据。
这就是用到了STL的一种神奇数据结构——map映射。
具体定义时,我们可以这么写:
map<下标类型, 数据类型>结构名
与前面几个数据结构的定义不同,这次的尖括号里有两个参数,分别代表访问的下标类型和需要存储的数据类型(别问我为什么参数名那么通俗,问就是我取的名)
制作不易,点个赞呗~
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站栏目:C++STL常用数据结构-创新互联
网页链接:https://www.cdcxhl.com/article26/iojjg.html
成都网站建设公司_创新互联,为您提供网站排名、App开发、定制网站、企业建站、搜索引擎优化、网站改版
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联