list简介
- #inlude < list >
- 实质为双向链表
- 是类模板
实例化
example:
1 //instantiate an empty list
2 list<int> listA;
3
4 //instantiate a list with 7 intergers,each initialized to 0
5 list<int> listB(7);
6
7 //instantiate a list with 7 intergers,each initialized to 1
8 list<int> listC(7,1);
9
10 // an copy of an existing list
11 list<int> listD(listC);
12
13 //a vector with 7 intergers,each 2
14 vector<int> vecA(7,2);
15
16 //instantiate a list using values from another container
17 list<int> listE(vecA.cbegin(),vecA.cend());
18
19 int myints[]={1,2,3,4,5,6,7};
20 //instantiate a list using values form a array
21 list<int> listF(myints,myints+sizeof(myints)/sizeof(int));
result:
1
2 0 0 0 0 0 0 0
3 1 1 1 1 1 1 1
4 1 1 1 1 1 1 1
5 2 2 2 2 2 2 2
6 1 2 3 4 5 6 7
插入元素
1 //insert elements at the beginning
2 listA.pushfront(2);
3
4 //inserting elements at the end
5 listA.pushback(3);
6
7 //insert elements at the beginning
8 listA.insert(listA.begin(),1);
9
10 //insert 7 elements of the same value 2
11 listA.insert(listA.begin(),7,2);
12
13 //insert elements fron another list at the begining
14 listA.insert(listA.begin(),listF.begin(),listF.end());
删除元素
1 //接受一个迭代器参数并删除迭代器指向的元素
2 listA.erase(iterator)
3 //接受两个迭代器参数并删除指定范围内的所有元素
4 listA.erase(listA.begin(),listA.end());
反转
//该函数没有参数,它反转list中元素的排列顺序
listA.reverse();
排序
//没有参数,采用升序排列
listA.sort();
//二元谓词作为参数,指定排序标准
bool Descending(const int& lsh,const int& rsh)
{
return(lsh>rsh)
}
listA.sort(Descending);
清空
是否为空
1 //原型
2 bool empty();
3 //使用
4 listA.empty();
元素个数
1 //原型,返回容器内元素个数
2 unsigned int size() const;
3 //使用
4 listA.size()
forward_list简介
- #include <forward_list>
- 单向链表,不能使用push_back
- 只允许沿一个方向遍历