本文共 1587 字,大约阅读时间需要 5 分钟。
List底层就是一个双向带头循环链表,与vector相比,List的插入与删除更加方便,只需要O(1)的时间复杂度,但是缺点也很明显,就是不能像vector一样支持随机访问。所以在使用时要根据实际情况进行选择。
使用List要包含头文件 <List>
List共有4种构造函数。#includeint main(){ List l1;//无参构造,存储类型为int型 List l2(n, val);//初始化n个val值存放在l2中 int arr[4] = {0,1,2,3}; List l3(arr, arr + 4);//迭代器构造 List l4(l3)//拷贝构造 return 0;}
List有有两种访问方式:
第一种,范围for循环#include#include
using namespace std;int main(){ int arr[4] = {0,1,2,3}; List l3(arr, arr + 4);//迭代器构造 for(int num : l3){ cout << num << " "; } cout << endl; return 0;}
第二种,迭代器访问
#include#include
using namespace std;int main(){ int arr[4] = {0,1,2,3}; List l3(arr, arr + 4);//迭代器构造 List ::iterator it = l3.begin(); while(it != l3.end()){ cout << *it << " "; it++; } cout << endl; return 0;}
迭代器接口:
#includeint main(){ List l1;//无参构造 //l1.begin();返回l1的第一个元素的迭代器 //l1.end();返回最后一个元素的next域 //l1.rbegin();返回最后一个元素的迭代器 //l1.rend();返回第一个元素的prev域 return 0;}
空间相关接口:
#includeint main(){ List l1;//无参构造 //l1.empty();//判断l1是否为空 //l1.size();//返回l1有效元素个数 return 0;}
增删查改接口:
#includeint main(){ List l1;//无参构造 //l1.push_back(val);尾插val数据 //l1.push_front(val);头插val数据 //l1.pop_back();尾删一个数据 //l1.pos_front();头删一个数据 //l1.insert(pos, val);在pos位置前面插入val数据 //l1.erase(pos);删除pos位置数据 List l2(n, val);//初始化n个val值存放在l2中 //l1.swap(l2);//交换l1与l2的内容 //l1.clear();清除l1所有有效数据 return 0;}
转载地址:http://spug.baihongyu.com/