【五一创作】c++七种常用数据结构

一、静态数组array

静态数组(array),是一种常用的数组,属于线性数据结构,赋值直接使用等于号

a[1] = 3;

 定义静态数组方式如下:

int a[空间];

其中,空间在60000000左右

我们可以将数组视为一个表格

数组从0位置开始,当数组下标<0时,会RuntimeError

这是一维数组,接下来是二维数组

int a[空间][空间];

其中,空间²在60000000左右

将表格扩容:

【五一创作】c++七种常用数据结构_第1张图片

我们举一个数组的例子

前缀和

一维前缀和:

for (int i = 1; i <= n; i++)
    d[i] = d[i - 1] + a[i];

当i = 1时,语句中d[i - 1]的下标是0

如果i从0开始,就会RE。


 二、vector

vector和静态数组相似,但推入需使用push_back

vector相比array不用用户赋值,并且默认推入一个值时,vector将其存储进了0位

#include   //vector头文件
...
vector<存储的东西的类型> v;
...
cin >> n;
v.push_back(n);
cout << v[0];


 三、队列queue

队列queue

就像排队买乌龟一样

【五一创作】c++七种常用数据结构_第2张图片

 queue使用push推入,pop弹出

定义它:

queue q;

push() 在队尾插入一个元素

q.push(3);

pop() 弹出第一个元素

q.pop();

size() 返回元素个数

int t = q.size();

empty() 是否为空,空则true

if (q.empty()) {
    ...
}

front() 返回第一个元素

int t = q.front();

back() 返回最后一个元素

int t = q.back();

别忘了头文件:

#include 

四、优先队列priority_queue

priority_queue在queue的基础上增加了默认排序功能

默认大的在顶端:

priority_queue q;

 特殊定义小的在顶端:

​priority_queue, greater > q;

 五、栈stack

栈stack,通常一起被人们提到,因为它们俩很相似,队列是先进先出,很公平,但栈很不公平,它先进后出(先到后得?)。

我们可以用一个一端封口的隧道(那queue就是普通隧道了)来看它

【五一创作】c++七种常用数据结构_第3张图片

 这就是入与出

头文件:

#include 

定义栈:

stack s;

 栈和队列操作语句几乎相同。


六、map

map,一种特别厉害的数据结构

说说它的存储:

1、当要存储的数在int范围内时,map可以实现

2、map的下标可以是任意类型

!!!!!

map的遍历需使用iterator

头文件:

#include 

定义map:

 定义map时尖括号里有两个类型,第一个是下标类型,第二个是存储的东西的类型。

map m;
//本map指int类型的下标存储着int类型(array中表示a[1] = 1)

map m;
//本map指string类型的下标存储着double类型
(array中表示a["string"] = 1.1,在array中不可实现)

使用it遍历:

for (map<类型,类型>::iterator it = m.begin(); it != m.end(); it++) {
    ...
}

 七、set

set,比map稍低级,也来存储各种类型

#include   //头文件

using namespace std;

set s;

int main () {
    
    s.insert(1);  //set使用插入
    
    for (set::iterator it = ...) {
        ...
    }
    
    return 0;
}

 当然也有其他数据结构,例如链表等等,可以自己去查阅

这些头文件均可以用一个头文件代替,那就是万能头文件

#include 

你可能感兴趣的:(知识,c++,数据结构)