list
一、List定义:
List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。使用时需要添加头文件
#include <list>
二、List定义和初始化:
list<int>lst1; //创建空list
list<int> lst2(5); //创建含有5个元素的list
list<int>lst3(3,2); //创建含有3个元素的list
list<int>lst4(lst2); //使用lst2初始化lst4
list<int>lst5(lst2.begin(),lst2.end()); //同lst4
三、List常用操作函数:
Lst1.assign() 给list赋值
Lst1.back() 返回最后一个元素
Lst1.begin() 返回指向第一个元素的迭代器
Lst1.clear() 删除所有元素
Lst1.empty() 如果list是空的则返回true
Lst1.end() 返回末尾的迭代器
Lst1.erase() 删除一个元素
Lst1.front() 返回第一个元素
Lst1.get_allocator() 返回list的配置器
Lst1.insert() 插入一个元素到list中
Lst1.max_size() 返回list能容纳的最大元素数量
Lst1.merge() 合并两个list
Lst1.pop_back() 删除最后一个元素
Lst1.pop_front() 删除第一个元素
Lst1.push_back() 在list的末尾添加一个元素
Lst1.push_front() 在list的头部添加一个元素
Lst1.rbegin() 返回指向第一个元素的逆向迭代器
Lst1.remove() 从list删除元素
Lst1.remove_if() 按指定条件删除元素
Lst1.rend() 指向list末尾的逆向迭代器
Lst1.resize() 改变list的大小
Lst1.reverse() 把list的元素倒转
Lst1.size() 返回list中的元素个数
Lst1.sort() 给list排序
Lst1.splice() 合并两个list
Lst1.swap() 交换两个list
Lst1.unique() 删除list中重复的元素
部分示例:
#include <iostream> #include <cstdio> #include <list> using namespace std; #define N 5 void pl(list<int> l) { int i; list<int>::iterator i1; for (i1=l.begin();i1!=l.end();i1++) { printf("%3d",*i1); } printf("\n"); } int main() { int i; list<int> l1;//创建空list list<int> l2(N);//创建含有N个元素的list list<int> l3(N,2);//创建含有N个元素的list pl(l1); pl(l2); pl(l3); for (i=0;i<N;i++) { l1.push_back(i);//添加值 } pl(l1); l1.pop_back();//删除末尾值 pl(l1); list <int>::iterator ii; ii=l1.begin();//返回首值迭代器 printf("%d\n",*ii); ii=l1.end();//返回尾值迭代器 ii--; printf("%d\n",*ii); l1.clear();//清空值 printf("%d\n",l1.empty());//判断是否为空 l3.erase(l3.begin(),l3.end());//删除元素 pl(l3); for (i=0;i<N;i++) { l1.push_back(i); } printf("%d %d\n",l1.front(),l1.back());//返回首元素、尾元素 l1.insert(l1.begin(),N,N); pl(l1); l1.remove(N);//删除相同元素 pl(l1); l1.reverse(); pl(l1); printf("%d\n",l1.size());//元素个数 l1.sort();//排序 pl(l1); l1.push_back(4); pl(l1); l1.unique();//删除相邻重复元素 pl(l1); return 0; }