STL list
来源:互联网 发布:写文章的软件 编辑:程序博客网 时间:2024/06/16 03:28
list容器介绍
list是一个双向链表,它有一个重要性质:插入操作和删除操作都不会造成原有的list迭代器失效,每次插入或删除一个元素就配置或释放一个元素空间。对于任何位置的元素插入或删除,O(n)的复杂度,即查找到该元素
常用函数
typedef struct Node
{
…………………………
}Node
(1) 构造函数
list<Node> n:创建一个空的list
list<Node> l(c2):复制另一个同类型元素的list
list<Node>c(n):创建n个元素的list,每个元素值由默认构造函数确定
list<Node>c(n,Node_temp):创建n个元素的list,每个元素的值为某一个Node变量
list<Node>c(begin,end):由迭代器创建list,迭代区间为[begin,end)//
(2) 大小、判断函数
Int size() const:返回容器结构体元素个数
bool empty() const:判断容器是否为空,若为空则返回true,or false
(3) 增加、删除函数
void push_back(const T& x):list尾部增加一个元素x
void push_front(const T& x):list首添加一个元素X
void pop_back():删除容器尾元素,常常需要先!empty()
void pop_front():删除容器首元素
void clear():删除容器中的所有元素,此时n.empty==true&&n.size()==0。
iterator insert(iterator it, const T& x ):在迭代器指针it前插入元素x,返回x迭代器指针
void insert(iterator it,size_type n,const T& x):迭代器指针it前插入n个相同元素x
void insert(iterator it,const_iterator first,const_iteratorlast):把[first,last)间的元素插入迭代器指针it前
iterator erase(iterator it):删除迭代器指针it对应的元素
iterator erase(iterator first,iterator last):删除迭代器指针[first,last)间的元素
(4) 遍历函数
iterator begin():返回首元素的迭代器指针
iterator end():返回尾元素之后位置的迭代器指针
reverse_iterator rbegin():返回尾元素的逆向迭代器指针,用于逆向遍历容器
reverse_iterator rend():返回首元素前一个位置的迭代器指针
reference front():返回首元素的引用
reference back():返回尾元素的引用
(5) 操作函数
void sort():容器内所有元素排序,默认是升序
template<class Pred>void sort(Pred pr):容器内所有元素根据预断定函数pr排序
void swap(list& str):两list容器交换功能
void unique():容器内相邻元素若有重复的,则仅保留一个
void splice(iterator it,list& li):队列合并函数,队列li所有函数插入迭代指针it前,x变成空队列
void splice(iterator it,list& li,iterator first):队列li中移走[first,end)间元素插入迭代指针it前
void splice(iterator it,list& li,iterator first,iterator last):x中移走[first,last)间元素插入迭代器指针it前
void reverse():反转容器中元素顺序
#include <iostream>
#include <list>
#include <queue>
#include <vector>
using namespace std;
typedef struct Node
{
int num;
int _rank;
} Node;
typedef Node Elemtype;
int main()
{
Node temp;
temp.num = 1;
temp._rank = 0;
Node temp1;
temp1.num = 11;
temp1._rank = 10;
list<Node> n;//temp为元素初始化值
n.push_front(temp1);
n.push_back(temp);
//n.clear();
/*if(!n.empty())
{
n.pop_back();
n.pop_front();
}*/
for (list<Node>::iterator it = n.begin(); it != n.end(); it++)
cout << it->num << endl << it->_rank << endl;
for (list<Node>::reverse_iterator it = n.rbegin(); it != n.rend(); it++)
cout << it->num << endl << it->_rank << endl;
n.pop_front();
for (list<Node>::reverse_iterator it = n.rbegin(); it != n.rend(); it++)
cout << it->num << endl << it->_rank << endl;
n.pop_back();
for (list<Node>::reverse_iterator it = n.rbegin(); it != n.rend(); it++)
cout << it->num << endl << it->_rank << endl;
}
- STL--list
- STL--list
- STL list
- STL list
- STL----list
- STL list
- stl-list
- stl list
- STL--list
- STL list
- stl list
- STL---List
- STL list
- STL list
- STL list
- STL list
- STL list
- STL List
- inode mac 校园网创建wifi 个人热点 thunderbolt
- jQuery常用代码
- ACM HDU 1176 免费馅饼
- C#高效插入sql数据库数据
- Oracle查询语句简单回顾(一)
- STL list
- 【清单】 ---算法竞赛入门经典第二版 【例题+习题】【持续更新中..】
- Google kotlin 支持资料
- Kotlin: Java 6 废土中的一线希望
- 单元测试概述
- 简单理解struts1和struts2
- 异常及重写equals、toString方法
- C#高效插入sql数据库数据
- Spark性能优化:开发调优篇