关闭

STL容器-序列式容器list

407人阅读 评论(0) 收藏 举报
分类:
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()

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();

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:407676次
    • 积分:6871
    • 等级:
    • 排名:第3764名
    • 原创:293篇
    • 转载:17篇
    • 译文:1篇
    • 评论:65条
    其它平台
    博客专栏