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实现
中介者模式: 中介者模式(Mediator Pattern)定义:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互.中介者模 ...
- Java实现将GBK编码格式的文件夹中所有文件都转化为UTF-8格式的文件,编码格式转化
package CodeConvert; import Java.io.BufferedReader; import java.io.BufferedWriter; import java.io.Fi ...
- vue-cli3项目优化首页加载过慢的一些心得
博主最近发现vue-cli3项目做完后,点击首页加载时间好久啊,一般都要3-5s.这样的加载时间博主自己都受不了,所以就有了这个随笔,将自己的一些研究心得分享给大家. 首先推荐大家下载一个webpac ...
- (六)VMware Harbor简单使用
VMware Harbor简单使用 1. 登陆: [用户:admin , 密码:Harbor12345]配置文件里设置的 登陆后的界面: 2. 用户管理: 2.1 新近用户 3. 仓库管理: 3.1 ...
- 在DataGridView控件中显示图片
实现效果: 知识运用: DataGridView控件的DataSource属性 实现代码: private void Form1_Load(object sender, EventArgs e) { ...
- 2018.4.13 用java配置/生成Xml文件 结合IO流知识点
自己创建本地文件Hello.txt 里面有数据 小明/23/增城/广东 小花/12/浦东/上海 StudentManager.java package com.lanqiao.dmeo7; impor ...
- volatile引发的一系列血案
最早读<深入理解java虚拟机>对于volatile部分就没有读明白,最近重新拿来研究并记录一些理解 理解volatile前需要把以下这些概念或内容理解: 1.JMM内存模型 2.并发编程 ...
- Mysql command line
show databasename; use databasename; show tables; desc tablename;
- PostgreSQL学习(2)-- mvcc
1.PG事务隔离级别 在数据库中,并发的操作进行读写数据时,则会遇到脏读.不可重复读.幻读.串行化异常等问题. 数据库事务的特性: 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对 ...
- CPL学习笔记(二)
数组 数组(array) 声明通用格式为: typeName arrayName[arraySize]. arrayName指定元素数目,必须为整型常量或const值.(不能是变量) int a[3] ...