我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

C++STL常用数据结构-创新互联

目录

创新互联公司专注于网站建设,为客户提供成都网站制作、网站建设、网页设计开发服务,多年建网站服务经验,各类网站都可以开发,品牌网站制作,公司官网,公司展示网站,网站设计,建网站费用,建网站多少钱,价格优惠,收费合理。

导入

一、栈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"];

这里,我们使用字符串作为下标,用中括号访问一个整形数据,还做了修改和输出。

若是在平常,这种代码肯定是不存在的(除非你有这个闲工夫心思去重载运算符)

但,是!今天,时代变了!我们可以写出下面几行代码:

#includemapm;
m["233"] = 0;

这里,我们导入了头文件map,然后我们用一种奇怪的方式访问到了以字符串作为下标的数据。

这就是用到了STL的一种神奇数据结构——map映射。

具体定义时,我们可以这么写:

map<下标类型, 数据类型>结构名

与前面几个数据结构的定义不同,这次的尖括号里有两个参数,分别代表访问的下标类型和需要存储的数据类型(别问我为什么参数名那么通俗,问就是我取的名)

结语

制作不易,点个赞呗~

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:C++STL常用数据结构-创新互联
链接地址:http://shouzuofang.com/article/iojjg.html

其他资讯