链表:将数据进行链式存储。物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接进行实现的。
STL中的链表是一个双向循环链表。
一、构造函数
list<T> lst; list(bag,end); list(n,elem); list(const list &list);
二、list的赋值和交换
assign(beg,end); assign(n,ele); list& operator=(const list &list); swap(list);
#include<iostream> #include<list> #include<algorithm> using namespace std; //加入const限制只读,并使用const_iterator void printList(const list<int>&d) { for (list<int>::const_iterator it = d.begin(); it != d.end(); it++) { cout << *it <<" "; } cout << endl; } void test() { list<int> lst1; for (int i = 0; i < 10; i++) { lst1.push_back(i); } list< lst2; list< lst3; lst3.assign(lst1.begin(),lst1.end()); list< lst4; lst4.assign(3,4); cout << "交换前:" << endl; printList(lst1); printList(lst4); cout << 交换后: endl; lst1.swap(lst4); printList(lst1); printList(lst4); } int main() { test(); system(pause); return 0; }
三、大小操作
empty();
size();
resize(ele);
resize(num,ele);
四、插入和删除
push_back(ele)尾部插入元素 pop_back()尾部删除元素 push_front(ele)头部插入元素 pop_front()头部删除元素 注意pos、start、end参数是一个迭代器 insert(pos,ele)向指定的索引位置插入元素,返回新数据的位置 insert(pos,n,1)">向指定的索引位置插入n个元素,无返回值 insert(pos,beg,end)在pos位置插入区间为[beg,end]之间的元素,无返回值 clear()移除所有数据 erase(pos)删除指定索引的元素 erase(start,1)">删除start到end之间的元素 remove(ele);删除指定的元素
五、数据存取
front();
back();
六、反转后排序
#include<iostream>bool myCompare(int val1, val2) { return val1 > val2; } lst1; lst1.push_back(); lst1.push_back(213反转 lst1.reverse(); 所有不支持随机访问的迭代器的容量,是不支持sort排序 sort(lst1.begin(),lst1.end());不合法 内部会提供相应的算法 lst1.sort();默认从大至小 printList(lst1); 要想降序排序,自己定义规则 lst1.sort(myCompare); printList(lst1); } ; }