List 由双向链表 (doubly linked list)实现而成,元素也存放在堆中,每个元素都是放在一块内存中,他的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随机存取变得非常没有效率,因此它没有提供[]操作符的重载。但是由于链表的特点,它可以很有效率的支持任意地方的插入和删除操作。
特点:
没有空间预留习惯,所以每分配一个元素都会从内存中分配,每删除一个元素都会释放它占用的内存。
在哪里添加删除元素性能都很高,不需要移动内存,当然也不需要对每个元素都进行构造与析构了,所以常用来做随机插入和删除操作容器。
访问开始和最后两个元素最快,其他元素的访问时间一样。
声明:
list<链表类型> 链表名;
迭代器:
begin():
指向列表首元素。
end():
指向列表尾元素后一个。
rbegin():
指向列表尾元素。
rend():
指向列表首元素前一个。
cbegin():
指向列表首元素且为常量。
cend():
指向列表尾元素后一个且为常量。
crbegin():
指向列表尾元素且为常量。
crend():
指向列表首元素前一个且为常量。
各成员函数用法:
size():
求链表长度,返回整型。
max_size():
求最大长度,返回整型。
resize():
改变链表大小,无返回值。
empty():
判断链表是否为空,返回布尔值。
front():
访问首元素,返回链表值。
back():
访问尾元素,返回链表值。
assign():
替换旧元素,无返回值。
push_back():
在尾元素后插入新值,无返回值。
push_front():
在首元素前插入新值,无返回值。
pop_back():
移除列表尾元素,无返回值。
pop_fronk():
移除列表首元素,无返回值。
insert():
在任意位置插入元素,无返回值。
erase():
在任意位置删除元素,无返回值。
clear():
清空链表,无返回值。
swap():
交换元素,无返回值。
sort():
进行快排,无返回值。