链表容器(list container in STL)

list的底层由双向链表(doubly linked list)实现而成,他的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随机存取变得非常没有效率,因此它没有提供 [] 操作符的重载。但是由于链表的特点,它可以很有效率的支持任意地方的插入和删除操作。

list 容器可用的成员函数

成员函数功能
begin()返回指向容器中第一个元素的双向迭代器。
end()返回指向容器中最后一个元素所在位置的下一个位置的双向迭代器。
rbegin()返回指向最后一个元素的反向双向迭代器。
rend()返回指向第一个元素所在位置前一个位置的反向双向迭代器。
empty()判断容器中是否有元素,若无元素,则返回 true;反之,返回 false。
size()返回当前容器实际包含的元素个数。
max_size()返回容器所能包含元素个数的最大值。这通常是一个很大的值,一般是 232-1,所以我们很少会用到这个函数。
front()返回第一个元素的引用。
back()返回最后一个元素的引用。
assign()用新元素替换容器中原有内容。
push_front()在容器头部插入一个元素。
pop_front()删除容器头部的一个元素。
push_back()在容器尾部插入一个元素。
pop_back()删除容器尾部的一个元素。
insert() 在容器中的指定位置插入元素。
erase()删除容器中一个或某区域内的元素。
swap()交换两个容器中的元素,必须保证这两个容器中存储的元素类型是相同的。
resize()调整容器的大小。
clear()删除容器存储的所有元素。
splice()将一个 list 容器中的元素插入到另一个容器的指定位置。
remove(val)删除容器中所有等于 val 的元素。
remove_if()删除容器中满足条件的元素。
unique()删除容器中相邻的重复元素,只保留一个。
merge()合并两个事先已排好序的 list 容器,并且合并之后的 list 容器依然是有序的。
sort()通过更改容器中元素的位置,将它们进行排序。
reverse()反转容器中元素的顺序。
 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
/**************************************************************** 
 * Description: 链表(list)
 * Author: Alex Li
 * Date: 2024-03-25 21:10:21
 * LastEditTime: 2024-03-25 21:21:29
****************************************************************/
#include <iostream>
#include <list>

using namespace std;

int main(){
	list<int> lst;
	for (int i = 0; i<6; i++){
		lst.push_back(i);
	}

	cout << lst.size() << endl; // 输出:6
//	cout << lst.max_size() << endl; // 输出最大容量
//	lst.resize(4); // 更改list大小
//	cout << lst.size() << endl; // 输出:4
	if (lst.empty())
		cout << "元素为空" << endl; // 输出:元素为空
    
	// 头部增加元素
	lst.push_front(4);
	// 末尾添加元素
	lst.push_back(5);
	// 任意位置插入一个元素
	auto it = lst.begin(); 
        //auto是自动类型推导,it为迭代器,作用类似指针,将lst.begin的地址给到it
	lst.insert(it, 2);
	// 任意位置插入n个相同元素
	lst.insert(lst.begin(), 3, 9);
	
	// 遍历显示
	for (it = lst.begin(); it != lst.end(); it++)
		cout << *it << " "; // 输出:9 9 9 2 4 0 1 2 3 4 5 5 
	cout << endl;
	return 0;
}
Scroll to Top