C++ STL 之 list
#include <list>
#include <iostream>
using namespace std; // 打印list元素
void PrintList(list<int>& L)
{
for (list<int>::iterator it = L.begin(); it != L.end(); it++)
{
cout << *it << " ";
}
cout << endl;
} // 初始化
// list<T> lstT;//list 采用采用模板类实现,对象的默认构造形式:
// list(beg, end);//构造函数将[beg, end)区间中的元素拷贝给本身。
// list(n, elem);//构造函数将 n 个 elem 拷贝给本身。
// list(const list &lst);//拷贝构造函数。
void test01()
{
list<int> mlist1;
list<int> mlist2(, );
list<int> mlist3(mlist2);
list<int> mlist4(mlist2.begin(), mlist2.end());
PrintList(mlist2);
PrintList(mlist3);
PrintList(mlist4);
cout << "-------------------------------" << endl;
} // list容器的插入和删除
// push_back(elem);//在容器尾部加入一个元素
// pop_back();//删除容器中最后一个元素
// push_front(elem);//在容器开头插入一个元素
// pop_front();//从容器开头移除第一个元素
// insert(pos, elem);//在 pos 位置插 elem 元素的拷贝,返回新数据的位置。
// insert(pos, n, elem);//在 pos 位置插入 n 个 elem 数据,无返回值。
// insert(pos, beg, end);//在 pos 位置插入[beg,end)区间的数据,无返回值。
// clear();//移除容器的所有数据
// erase(beg, end);//删除[beg,end)区间的数据,返回下一个数据的位置。
// erase(pos);//删除 pos 位置的数据,返回下一个数据的位置。
// remove(elem);//删除容器中所有与 elem 值匹配的元素
void test02()
{
list<int> mlist;
// 插入操作
mlist.push_back();
mlist.push_front();
mlist.insert(mlist.begin(), );
mlist.insert(mlist.end(), );
mlist.insert(mlist.end(), );
PrintList(mlist);
list<int>::iterator it = mlist.begin();
it++;
it++;
mlist.insert(it, );
mlist.insert(mlist.end(), );
PrintList(mlist);
// 删除
// mlist.pop_back();
// mlist.pop_front();
mlist.remove(); // 删除匹配所有值
PrintList(mlist);
// mlist.erase(mlist.begin(), mlist.end());
PrintList(mlist);
cout << "-------------------------------" << endl;
} // list大小操作
// size();//返回容器中元素的个数
// empty();//判断容器是否为空
// resize(num);//重新指定容器的长度为 num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
// resize(num, elem);//重新指定容器的长度为 num,若容器变长,则以 elem 值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。 // 赋值操作
// assign(beg, end);//将[beg, end)区间中的数据拷贝赋值给本身。
// assign(n, elem);//将 n 个 elem 拷贝赋值给本身。
// list& operator=(const list &lst);//重载等号操作符
// swap(lst);//将 lst 与本身的元素互换。
void test03()
{
list<int> mlist;
mlist.assign(, );
list<int> mlist2;
mlist2 = mlist;
PrintList(mlist);
mlist2.push_back();
PrintList(mlist2);
cout << "------------------" << endl;
mlist2.swap(mlist);
PrintList(mlist);
PrintList(mlist2);
cout << "------------------" << endl;
} // 排序 翻转
// reverse();//反转链表,比如 lst 包含 1,3,5 元素,运行此方法后,lst 就包含 5,3,1 元素。
// sort(); //list 排序
void test04()
{
list<int> mlist;
for (int i = ; i < ; i++)
{
mlist.push_back(i);
}
PrintList(mlist);
// 容器元素反转
mlist.reverse();
PrintList(mlist);
cout << "--------------------" << endl;
} bool muCompare(int v1, int v2)
{
return v1 > v2;
} // 排序
void test05()
{
list<int> mlist;
mlist.push_back();
mlist.push_back();
mlist.push_back();
mlist.push_back();
PrintList(mlist);
// 排序默认从小到大排序
mlist.sort();
PrintList(mlist);
// 从大到小排序
mlist.sort(muCompare);
PrintList(mlist);
} int main()
{
test01();
test02();
test03();
test04();
test05();
getchar();
return ;
}
C++ STL 之 list的更多相关文章
- 详细解说 STL 排序(Sort)
0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算 ...
- STL标准模板库(简介)
标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...
- STL的std::find和std::find_if
std::find是用来查找容器元素算法,但是它只能查找容器元素为基本数据类型,如果想要查找类类型,应该使用find_if. 小例子: #include "stdafx.h" #i ...
- STL: unordered_map 自定义键值使用
使用Windows下 RECT 类型做unordered_map 键值 1. Hash 函数 计算自定义类型的hash值. struct hash_RECT { size_t operator()(c ...
- C++ STL简述
前言 最近要找工作,免不得要有一番笔试,今年好像突然就都流行在线笔试了,真是搞的我一塌糊涂.有的公司呢,不支持Python,Java我也不会,C有些数据结构又有些复杂,所以是时候把STL再看一遍了-不 ...
- codevs 1285 二叉查找树STL基本用法
C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...
- STL bind1st bind2nd详解
STL bind1st bind2nd详解 先不要被吓到,其实这两个配接器很简单.首先,他们都在头文件<functional>中定义.其次,bind就是绑定的意思,而1st就代表fir ...
- STL sort 函数实现详解
作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不 ...
- STL的使用
Vector:不定长数组 Vector是C++里的不定长数组,相比传统数组vector主要更灵活,便于节省空间,邻接表的实现等.而且它在STL中时间效率也很高效:几乎与数组不相上下. #include ...
- [C/C++] C/C++延伸学习系列之STL及Boost库概述
想要彻底搞懂C++是很难的,或许是不太现实的.但是不积硅步,无以至千里,所以抽时间来坚持学习一点,总结一点,多多锻炼几次,相信总有一天我们会变得"了解"C++. 1. C++标准库 ...
随机推荐
- Java面试题(基础)
一.Java 基础 1.JDK 和 JRE 有什么区别? 答:JRE是java运行时环境,包含了java虚拟机,java基础类库.是使用java语言编写的程序运行所需要的软件环境,是提供给想运行jav ...
- 反向代理远端 单台tomcat 使用域名代理
.环境 nginx 10.1.1.161 公网:123.58.251.166 tomcat 10.1.1.103 .远端tomcat 配置 [root@host---- ~]# netstat -tn ...
- Nginx+Keepalived双主架构实现
Keepalived+Nginx实现高可用Web负载均衡 Master 192.168.0.69 nginx.keepalived Centos7.4backup 192.168.0.70 nginx ...
- 4.1 python类的特殊成员,偏函数,线程安全,栈,flask上下文
目录 一. Python 类的特殊成员(部分) 二. Python偏函数 1. 描述 2. 实例一: 取余函数 3. 实例二: 求三个数的和 三. 线程安全 1. 实例一: 无线程,消耗时间过长 2. ...
- Flutter中的浮动按钮FloatingActionButton 及融合底部工具栏
FloatingActionButton 简称 FAB,从字面理解可以看出,它是“可交互的浮动按钮”,其实在Flutter默认生成的代码中就有这家伙,只是我们没有正式的接触. 一般来说,它是一个圆形, ...
- 【Python】机器学习之单变量线性回归 利用批量梯度下降找到合适的参数值
[Python]机器学习之单变量线性回归 利用批量梯度下降找到合适的参数值 本题目来自吴恩达机器学习视频. 题目: 你是一个餐厅的老板,你想在其他城市开分店,所以你得到了一些数据(数据在本文最下方), ...
- Oracle导出包含clob字段的sql脚本工具
之前工作中遇到生产环境不允许导入Oracle的dmp文件,只能导入sql脚本,但是表中存在clob字段,直接用plsql工具无法导出clob字段,用了下dbvisualizer可以直接导出,亲测可用. ...
- ORK
小试OKR一季度之后有感分享,你要不要试试ORK? 封面 OKR已经在国内热火朝天有一阵子了,为了适当的赶时髦,从年初开始团队内部小范围使用ORK模式以便测试团队会有什么化学反应.这篇文章打算写写 ...
- mui横向滑动菜单
<style> .mui-bar a { color: #E02D26; } #topItem { background: white; border-bottom: 1px solid ...
- VS2013:error C1069: 无法读取编译器命令行
前一阵搞python和matlab,没用VS 2013,今天打开一个C++程序想跑一跑,突然蹦出这么个错误,然后发现电脑上所有的程序都会这样了. 后来发现是TMP/TEMP环境变量路径有空格的问题,更 ...