C++容器(List)

2

C++容器(List)

  容器是C++非常方便的功能,今天给小伙伴们介绍List库,List库是C++中的链表容器,其优点是不会造成内存的浪费和溢出,这和Vector相反,而且插入元素非常方便。但是缺点也很明显,需要一个额外的内存空间存放指针,而且因为其不按照内存进行存放,因此遍历花费时间较长。

List容器

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
59
60
#include<iostream>
#include<list>
using namespace std;

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

int main() {

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

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

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

// push_front是list最经常用的操作,在头部添加元素。
// push_back在尾部添加元素。
l.push_front(1);
l.push_back(4);
printList(l);
cout << "l的尺寸为:" << l.size() << endl;

// 和push_front相反,pop_front时在头部移除元素。
//pop_back在尾部移除元素。
l.pop_front();
l.pop_back();
printList(l);
cout << "l的尺寸为:" << l.size() << endl;

// front获取list第一个元素,但是不能使用l[0],因为list是不连续的内存空间,因此无法通过索引直接访问。
cout << "第一个元素为:" << l.front() << endl;
// back获取list最后一个元素。
cout << "最后一个元素为:" << l.back() << endl;

// remove移除所有值为目标的节点
l.remove(0);
printList(l);
cout << "l的尺寸为:" << l.size() << endl;

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

return 0;
}

1

C++小结

  list容器使用并不是很频繁,一般都是使用vector和deque就可以完成大部分的应用场景,而且list不方便的地方在于无法通过下表对元素进行索引,因此小伙伴们作为了解即可。

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