list的优势在于在任何位置执行插入和删除动作都非常迅速,因为改变的仅仅是链接。
一 初始化(以元素为int型的list为例)
list<int> listname;
list<int> listname(5);
list<int> listname(5,1);//包含5个元素1的列表
list<int> listname(其他list);
list<int> listname(elselist.begin(),elselist.end());
二 元素的赋值
从前面插入:mylist.push_front(1);
从后面插入:mylist.push_back(1);
从前面弹出:mylist.pop_front();
从后面弹出:mylist.pop_back();
三 容器的容量
返回list元素的个数:list.size()
返回list最大的容量:list.max_size()
调整list的容量:list.resize(5,1)//5为调整后的容量大小,1为填充的元素
四 迭代器相关
正向迭代器:mylist.begin()/mylist.end();
反向迭代器:mylist.rbegin()/mylist.rend();
返回前面第一个/最后一个元素:mylist.front()/mylist.back()
五 成员函数
1.判断容器是否为空:mylist.empty()
list容器提供了可重置元素值的成员函数assign(),使用其可修改任意元素的值
重置list中为5个相同的元素1:mylist.assign(5,1);
用另一个list重置mylist:mylist.assign(elselist.begin(),elselist.end());
4.交换两个list容器的内容
mylist.swap(elselist);
5.元素的插入和删除
删除:mylist.erase(...);
插入:mylist.insert(...);
全部清除:mylist.clear();
6.运算符函数
判断两个ist是否相同:==
其他运算符类似:<、!=、>、<=、>=
7.其他成员函数
7.1 合并两个list: mylist.merge(...)
如,合并两个list,合并后默认按照从小到大排序:mylist.merge(elselist);
7.2 list排序: mylist.sort(...)
如,mylist.sort(),默认从小到大进行排序
如,mylist.sort(greater<int>()),从大到小排序
7.3 指定移除某个或几个具体元素:mylist.remove(元素)
如,mylist.remove(1),移除元素1
7.4 移除使判断函数为真的元素:mylist.remove_if(判断函数);
7.5 将其他list合并到mylist:mylist.splice(...)
如,将elselist整个列表合并到mylist的后面,此时elselist变为空:mylist.splice(mylist.end(),elselist)
如,将将elselist的第一个元素合并到mylist后面,此时elselist减少一个元素,mylist.splice(mylist.end(),elselist,elselist.begin())
如,将将elselist的迭代器区间的元素合并到mylist,此时elselist减少响应的区间元素,mylist.splice(mylist.end(),elselist,elselist.begin(),elselist.end())
7.6 去重:mylist.unique()
如,移除list中相邻的重复元素,只保留一个,mylist.unique()
如,移除list中元素,仅保留和第一个元素相等的元素,mylist.unique(Pred)
7.7 反转列表中所有的元素,mylist.reverse();
一 初始化(以元素为int型的list为例)
list<int> listname;
list<int> listname(5);
list<int> listname(5,1);//包含5个元素1的列表
list<int> listname(其他list);
list<int> listname(elselist.begin(),elselist.end());
二 元素的赋值
从前面插入:mylist.push_front(1);
从后面插入:mylist.push_back(1);
从前面弹出:mylist.pop_front();
从后面弹出:mylist.pop_back();
三 容器的容量
返回list元素的个数:list.size()
返回list最大的容量:list.max_size()
调整list的容量:list.resize(5,1)//5为调整后的容量大小,1为填充的元素
四 迭代器相关
正向迭代器:mylist.begin()/mylist.end();
反向迭代器:mylist.rbegin()/mylist.rend();
返回前面第一个/最后一个元素:mylist.front()/mylist.back()
五 成员函数
1.判断容器是否为空:mylist.empty()
2.元素的存取和访问,源代码如下:
#include "list"
#include "iostream"
#include "iterator"
#include "algorithm"
using namespace std;
void print(const int& a)
{
cout<<a<<" ";
}
int _tmain(int argc, _TCHAR* argv[])
{
list<int> mylist;
mylist.push_back(2);
mylist.push_back(3);
mylist.push_front(1);
for (list<int>::iterator it=mylist.begin();it!=mylist.end();it++)//使用迭代器访问
{
cout<<*it<<endl;
}
for_each(mylist.begin(),mylist.end(),print);//使用标准库算法访问
getchar();
return 0;
}
3.元素的重置
list容器提供了可重置元素值的成员函数assign(),使用其可修改任意元素的值
重置list中为5个相同的元素1:mylist.assign(5,1);
用另一个list重置mylist:mylist.assign(elselist.begin(),elselist.end());
4.交换两个list容器的内容
mylist.swap(elselist);
5.元素的插入和删除
删除:mylist.erase(...);
插入:mylist.insert(...);
全部清除:mylist.clear();
6.运算符函数
判断两个ist是否相同:==
其他运算符类似:<、!=、>、<=、>=
7.其他成员函数
7.1 合并两个list: mylist.merge(...)
如,合并两个list,合并后默认按照从小到大排序:mylist.merge(elselist);
7.2 list排序: mylist.sort(...)
如,mylist.sort(),默认从小到大进行排序
如,mylist.sort(greater<int>()),从大到小排序
7.3 指定移除某个或几个具体元素:mylist.remove(元素)
如,mylist.remove(1),移除元素1
7.4 移除使判断函数为真的元素:mylist.remove_if(判断函数);
7.5 将其他list合并到mylist:mylist.splice(...)
如,将elselist整个列表合并到mylist的后面,此时elselist变为空:mylist.splice(mylist.end(),elselist)
如,将将elselist的第一个元素合并到mylist后面,此时elselist减少一个元素,mylist.splice(mylist.end(),elselist,elselist.begin())
如,将将elselist的迭代器区间的元素合并到mylist,此时elselist减少响应的区间元素,mylist.splice(mylist.end(),elselist,elselist.begin(),elselist.end())
7.6 去重:mylist.unique()
如,移除list中相邻的重复元素,只保留一个,mylist.unique()
如,移除list中元素,仅保留和第一个元素相等的元素,mylist.unique(Pred)
7.7 反转列表中所有的元素,mylist.reverse();