C++容器(Deque)

2

C++容器(Deque)

  容器是C++非常方便的功能,今天给小伙伴们介绍deque库,vector库是C++专门用于处理动态双端数组的库,里面内置了许多增删改查的算法,在刷题时常常使用它。

deque容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include<iostream>
#include<deque>
using namespace std;

// 为了方便显示,在这里将打印操作定义为一个函数
void printDeque(deque<int> d) {
cout << "d:";
for (deque<int>::iterator it = d.begin(); it < d.end(); it++) {
cout << *it << " ";
}
cout << endl;
}

int main() {

// 创建一个deque容器,同vector相同,可以存放任意类型的数据,但是需要指定数据类型。
// 而且建立以后只能存放该类型的数据。
deque<int> d = { 2, 3, 4 };
printDeque(d);

// empty判断容器是否为空,为空则返回true,否则返回false
cout << "d是否为空:" << d.empty() << endl;
// deque对象没有capacity方法,只有size方法,和vector相同,可以获取容器中的元素个数。
cout << "d的尺寸为:" << d.size() << endl;

// resize是将deque调整大小,如果大于原始数组,则填充数值,达到resize的大小,否则会删除超出的部分。
d.resize(10);
printDeque(d);
cout << "d的尺寸为:" << d.size() << endl;

// push_front是deque最经常用的操作,在头部添加元素,deque最核心的地方就在于此,头插可以节约大量时间。
// push_back和vector相同,在尾部添加元素。
d.push_front(1);
d.push_back(4);
printDeque(d);
cout << "d的尺寸为:" << d.size() << endl;

// 和push_front相反,pop_front时在头部移除元素,除了push_front和pop_front,deque和vector其他的内容几乎相同。
//pop_back和vector也相同,在尾部移除元素。
d.pop_front();
d.pop_back();
printDeque(d);
cout << "d的尺寸为:" << d.size() << endl;

// 索引元素可以直接类似于数组的写法,也可以使用at进行索引
cout << "d[2] = " << d[2] << endl;
// front获取deque第一个元素,等价于d[0]
cout << "第一个元素为:" << d.front() << endl;
// back获取deque最后一个元素,等价于d[d.size() - 1]
cout << "最后一个元素为:" << d.back() << endl;

// clear清空容器中的所有内容
d.clear();
printDeque(d);
cout << "d的尺寸为:" << d.size() << endl;

return 0;
}

1

C++小结

  当然了deque的相关操作还有很多很多,在这里也不可能一一讲解,但是常用的一些操作都已经介绍,尤其是empty,size,push_front,push_back,pop_front,pop_back,clear,back,索引和遍历这些操作,是deque最最常用的操作,在BFS有大量的应用,因为BFS需要在尾部插入元素,从头部弹出元素,使用vector不是很方便,因此deque可以大放异彩,有了deque容器,使得我们写代码时更加方便,请小伙伴们务必放在心上。

-------------本文结束感谢您的阅读-------------
0%