当前位置:   article > 正文

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

c++数据结构

一、静态数组array

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

a[1] = 3;

 定义静态数组方式如下:

int a[空间];

其中,空间在60000000左右

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

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

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

int a[空间][空间];

其中,空间²在60000000左右

将表格扩容:

我们举一个数组的例子

前缀和

一维前缀和:

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

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

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


 二、vector

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

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

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

 三、队列queue

队列queue

就像排队买乌龟一样

 queue使用push推入,pop弹出

定义它:

queue<int> q;

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

q.push(3);

pop() 弹出第一个元素

q.pop();

size() 返回元素个数

int t = q.size();

empty() 是否为空,空则true

  1. if (q.empty()) {
  2. ...
  3. }

front() 返回第一个元素

int t = q.front();

back() 返回最后一个元素

int t = q.back();

别忘了头文件:

#include <queue>

四、优先队列priority_queue

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

默认大的在顶端:

priority_queue<int> q;

 特殊定义小的在顶端:

​priority_queue<int, vector<int>, greater<int> > q;

 五、栈stack

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

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

 这就是入与出

头文件:

#include <stack>

定义栈:

stack<int> s;

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


六、map

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

说说它的存储:

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

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

!!!!!

map的遍历需使用iterator

头文件:

#include <map>

定义map:

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

  1. map<int, int> m;
  2. //本map指int类型的下标存储着int类型(array中表示a[1] = 1
  3. map<string, double> m;
  4. //本map指string类型的下标存储着double类型
  5. (array中表示a["string"] = 1.1,在array中不可实现)

使用it遍历:

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

 七、set

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

  1. #include <set> //头文件
  2. using namespace std;
  3. set<int> s;
  4. int main () {
  5. s.insert(1); //set使用插入
  6. for (set<int>::iterator it = ...) {
  7. ...
  8. }
  9. return 0;
  10. }

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

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

#include <bits/stdc++.h>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/516226
推荐阅读
相关标签
  

闽ICP备14008679号