STL学习笔记2--list
List --- 双向列表
List是线性列表结构,数据查找需要一个接一个,不能直接得到元素地址,检索时间与目标元素的位置成正比。但是插入数据比较快,可以在任何位置插入数据或者删除数据。list特点是:
(1) 不使用连续的内存空间这样可以随意地进行动态操作;
(2)可以在内部任何位置快速地插入或删除,当然也可以在两端进行push和pop 。
(3) 不能进行内部的随机访问,即不支持[ ] 操作符和vector.at() ;
大多数函数和vector的类似,这里就不解释了,有几个不一样的如下:
merge() 合并两个list --- 链接之后会把第二个链表删除掉
void merge( list &lst );//把自己和lst链表连接在一起
void merge( list &lst, Comp compfunction ); //指定compfunction,则将指定函数作为比较的依据。
list <int> listTest;
list <int>::iterator it;
list <int> listTest2;
// listTest.assign(4,66);//初始化,给4个元素赋值为66
for (int i=;i<;i++)
{
listTest.push_back(i);//
listTest2.push_back(+i);//
} listTest.merge(listTest2);
cout<<listTest.back()<<endl;//获取最后一个元素
//cout<<listTest2.back()<<endl;
if (listTest2.empty())
{
cout<<"listTest2 is ampty"<<endl;
}
void remove( const TYPE &val ); //删除链表中所有值为val的元素
void remove( const TYPE &val ); //删除链表中所有值为val的元素
listTest.remove();//移除最后一个元素
cout<<listTest.back()<<endl;//获取最后一个元素
unique() 删除list中重复的元素
void unique();//删除链表中所有重复的元素
void unique( BinPred pr );// 指定pr,则使用pr来判定是否删除。
it = listTest.end();
cout<<listTest.size()<<endl;
cout<<listTest.back()<<endl;//获取最后一个元素
listTest.insert(it,);//插入到it以前
listTest.insert(it,);//插入到it以前
listTest.unique();//删除所有重复元素
cout<<"*******************"<<endl;
cout<<listTest.size()<<endl;
cout<<listTest.back()<<endl;//获取最后一个元素
splice() 合并两个list
void splice( iterator pos, list &lst );//把lst连接到pos的位置
void splice( iterator pos, list &lst, iterator del );//插入lst中del所指元素到现链表的pos上
void splice( iterator pos, list &lst, iterator start, iterator end );//用start和end指定范围。
it = listTest.end();
listTest.splice(it,listTest2);//将链表2链接到1后面
cout<<listTest.back();
完整代码如下:
#include "list"
#include "iostream"
using namespace std;
int main()
{
list <int> listTest;
list <int>::iterator it;
list <int> listTest2;
// listTest.assign(4,66);//初始化,给4个元素赋值为66
for (int i=;i<;i++)
{
listTest.push_back(i);
listTest2.push_back(+i);
} // listTest.merge(listTest2);
// cout<<listTest.back()<<endl;//获取最后一个元素
// //cout<<listTest2.back()<<endl;
// if (listTest2.empty())
// {
// cout<<"listTest2 is ampty"<<endl;
// }
// listTest.remove(19);//移除最后一个元素
// cout<<listTest.back()<<endl;//获取最后一个元素
//
it = listTest.end();
cout<<listTest.size()<<endl;
cout<<listTest.back()<<endl;//获取最后一个元素
listTest.insert(it,);
listTest.insert(it,);
listTest.unique();//删除所有重复元素
cout<<"*******************"<<endl;
cout<<listTest.size()<<endl;
cout<<listTest.back()<<endl;//获取最后一个元素
cout<<listTest.front()<<endl;//获取最后一个元素
if (listTest.empty())
{
cout<<"listTest is empty"<<endl;
} // it = listTest.end();
// listTest.splice(it,listTest2);//将链表2链接到1后面
// cout<<listTest.back();
getchar();
getchar();
return ;
}
Code
STL学习笔记2--list的更多相关文章
- Effective STL 学习笔记 39 ~ 41
Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value
Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value */--> div.org-src-container ...
- Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据
Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据 */--> div.org-src-container { font-size: 85%; font-fam ...
- Effective STL 学习笔记 32 ~ 33
Effective STL 学习笔记 32 ~ 33 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 31:排序算法
Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 Item 30: 保证目标区间足够大
Effective STL 学习笔记 Item 30: 保证目标区间足够大 */--> div.org-src-container { font-size: 85%; font-family: ...
- Effective STL 学习笔记 Item 26: Prefer Iterator to reverse_iterator and const_rever_itertor
Effective STL 学习笔记 Item 26: Prefer Iterator to reverse_iterator and const_rever_itertor */--> div ...
- Effective STL 学习笔记: Item 22 ~ 24
Effective STL 学习笔记: Item 22 ~ 24 */--> div.org-src-container { font-size: 85%; font-family: monos ...
- Effective STL 学习笔记 Item 21:Comparison Function 相关
Effective STL 学习笔记 Item 21:Comparison Function 相关 */--> div.org-src-container { font-size: 85%; f ...
- Effective STL 学习笔记:19 ~ 20
Effective STL 学习笔记:19 ~ 20 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
随机推荐
- 外观模式及php实现
外观模式: 外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更 ...
- 1068 乌龟棋 2010年NOIP全国联赛提高组
1068 乌龟棋 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Descrip ...
- 【extjs6学习笔记】1.3 初始:根据模板创建项目
使用sencha创建应用 命令说明:sencha -sdk /path/to/sdk generate app -s /your/templates/path/ MyApp /path/to/myap ...
- uvm_reg_predictor——寄存器模型(十一)
保存寄存器的值 观察DUT寄存器值的变化. //---------------------------------------------------------------------------- ...
- Mysql的介绍和安装注意
1.Mysql所属公司:Oracle 2.数据库类型:关系型数据库 3.开发语言:C++ 4.版本:企业收费版和社区免费版 5.搭建Mysql环境 点击下一步直到遇到选择数据库编码的时候选择utf-8 ...
- 关系代数演算So Easy
关系代数运算So Easy 关系代数是以关系为运算的一组高级运算的集合.由于定义为属性个数 相同的元组的集合,因此集合代数的操作就可以引入到关系代数中.关系代数也可以看做是一种抽象的查询语言,是对关系 ...
- AWVS12 防止反复注册
以管理员权限运行cmd,输入以下内容: cacls "C:\ProgramData\Acunetix\shared\license." /t /p everyone:r 如图:
- Mac OS X El Capitan系统完整性保护System Integrity Protection (SIP)
http://blog.csdn.net/yulimin/article/details/49992031 引言:前段时间经历了XCode编译器代码被注入的事件后,这次 Mac OS X El Cap ...
- CPP-基础:虚函数表
虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的.简称为V-Table.在这个表中,主是要一个类的虚函数的地址表 ...
- OC和C++的区别
C++语言特点: 1.在C语言的基础上进行扩充和完善,使C++兼容了C语言的面向过程特点,又成为了一种面向对象的程序设计语言: 2.可以使用抽象数据类型进行基于对象的编程: 3.可以使用多继承.多态进 ...