链表:将数据进行链式存储。物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接进行实现的。
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<int> lst2; list<int> lst3; lst3.assign(lst1.begin(), lst1.end()); list<int> 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,ele)//向指定的索引位置插入n个元素,无返回值 insert(pos,beg,end)//在pos位置插入区间为[beg,end]之间的元素,无返回值 clear()//移除所有数据 erase(pos)//删除指定索引的元素 erase(start,end)//删除start到end之间的元素 remove(ele);//删除指定的元素
五、数据存取
front(); back();
六、反转后排序
#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; } bool myCompare(int val1, int val2) { return val1 > val2; } void test() { list<int> lst1; lst1.push_back(4); lst1.push_back(2); lst1.push_back(1); lst1.push_back(3); //反转 lst1.reverse(); //所有不支持随机访问的迭代器的容量,是不支持sort排序 //sort(lst1.begin(), lst1.end());不合法 //内部会提供相应的算法 lst1.sort();//默认从大至小 printList(lst1); //要想降序排序,自己定义规则 lst1.sort(myCompare); printList(lst1); } int main() { test(); system("pause"); return 0; }
原文地址:https://www.cnblogs.com/xiximayou/p/12111722.html
时间: 2024-10-10 01:27:18