先看函数:
C++ Lists
Lists are sequences of elements stored in a linked list. Compared to vectors, they allow fast insertions and deletions, but slower random access.
Display all entries for C++ Lists on one page, or view entries individually:
List constructors |
create lists and initialize them with some data |
List operators |
assign and compare lists |
assign |
assign elements to a list |
back |
returns a reference to last element of a list |
begin |
returns an iterator to the beginning of the list |
clear |
removes all elements from the list |
empty |
true if the list has no elements |
end |
returns an iterator just past the last element of a list |
erase |
removes elements from a list |
front |
returns a reference to the first element of a list |
insert |
inserts elements into the list |
max_size |
returns the maximum number of elements that the list can hold |
merge |
merge two lists |
pop_back |
removes the last element of a list |
pop_front |
removes the first element of the list |
push_back |
add an element to the end of the list |
push_front |
add an element to the front of the list |
rbegin |
returns a reverse_iterator to the end of the list |
remove |
removes elements from a list |
remove_if |
removes elements conditionally |
rend |
returns a reverse_iterator to the beginning of the list |
resize |
change the size of the list |
reverse |
reverse the list |
size |
returns the number of items in the list |
sort |
sorts a list into ascending order |
splice |
merge two lists in constant time |
swap |
swap the contents of this list with another |
unique |
removes consecutive duplicate elements |
要注意的是list不提随机的迭代器,迭代器是个双向的,非连续存储,而且是个环状链表在尾端是个未初始化节点
空判断:begin==end;
clear remove unique(把相同元素移出,留一个先sort) insert(插入两种方式)
只能使用成员函数 sort,不能使用 算法 sort(他只接受random iterator)
1/**//*
2 Name: C++ STL LIST
3 Copyright:
4 Author: Torres
5 Date: 17-08-08 23:28
6 Description: LIST 学习笔记
7*/
8#include<iostream>
9#include<list>
10#include<vector>
11#include<algorithm>
12using namespace std;
13typedef struct node{
14 double x,y;
15 node (double a=0,double b=0){
16 x=a;
17 y=b;
18 }
19}node;
20void print(int a){printf("%d ",a);return;}
21
22ostream operator <<(ostream out,node a)
23{
24 return out<<a.x<<" "<<a.y<<endl;
25}
26int main()
27{
28 int i,j;
29
30 list<node>nlist;
31 list<int>intlist,intlist1;
32
33 vector<int>intv1,intv2;
34 intv1.assign(5,7);
35 intv2.assign(intv1.begin()+1,intv1.end()-1);
36 for_each(intv2.begin()+1,intv2.end(),print);
37 cout<<endl;
38
39 //assign的用法,有两种,发现list的iterator不能够相加而vector可以
40 intlist.assign(5,7);
41 intlist1.assign(intlist.begin(),intlist.end());
42 for_each(intlist.begin(),intlist.end(),print);
43 printf("\n");
44 for_each(intlist1.begin(),intlist1.end(),print);
45 printf("\n");
46
47 //size的用法,表示实际数据的大小
48 cout<<intlist.size()<<endl;
49 //list没有容量capacity函数
50
51 //因为list是一个双端链表,不支持随机存取,他的存取必须用iterator来进行
52 //而vector,deque,等容器是支持的。
53 list<int>::iterator it1;
54 for(it1=intlist1.begin();it1!=intlist1.end();it1++)
55 cout<<*it1<<" ";
56 cout<<endl;
57
58 const node cnode(1.0,2.0);
59 cout<<cnode<<endl;
60
61 nlist.assign(5,cnode);
62 list<node>::iterator it2;
63 for(it2=nlist.begin();it2!=nlist.end();it2++)
64 cout<<*it2;
65 return 0;
66}
67