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++标准库 ...
随机推荐
- Web Service 实例基于Socket创建Web服务
ServerSocket服务器端代码如下: public static void main(String[] args) throws IOException { // 1:建立服务器端的tcp so ...
- smarty 对数据库的简单操作。
smarty简单配置 -------------------------------------smarty_inc.php-------------------------------------- ...
- for-update与for-update nowait
1.for update 和 for update nowait 的区别: 首先一点,如果只是select 的话,Oracle是不会加任何锁的,也就是Oracle对 select 读到的数据不会有任何 ...
- faster-rcnn 测试自己数据集训练的模型
python demo_2019051601.pyTraceback (most recent call last): File "demo_2019051601.py", lin ...
- Ubuntu 18.04设置1920*1080
Ubuntu升级后,发现分辨率没有1920*1080,在网上寻找了一个文章解决办法如下. 方案一(临时性,重启会失效): 1.打开终端.输入:cvt 1920 1080 出现有modeline 的提示 ...
- Clonezilla克隆还原系统
简介 Clonezilla是一个专门用来克隆磁盘驱动器的Linux发行版.它可以操作任何你所能想象到的文件系统类型.Clonezilla有两种版本:Live和SE.Live版本与Ubuntu的Live ...
- 微信小程序 — 自定义picker选择器弹窗内容+textarea穿透bug
微信小程序中定义好的几种picker选择器,不管是日期选择器还是地区选择器,或是其他的都只有定死的样式和内容. 但是大多数开发程序的情况下还是需要自己写样式的,或是内容的. 例如: 代码如下: < ...
- Flutter 路由 页面间跳转和传参 返回
Navigator Navigator用来管理堆栈功能(即push和pop),在Flutter的情况下,当我们导航到另一个屏幕时,我们使用Navigator.push方法将新屏幕添加到堆栈的顶部.当然 ...
- 驱动备份还原命令——驅動備份還原命令——Driver Backup/Restore
以管理員身份啓動命令提示符,輸入以下命令: 1.驅動備份(备份Backup)命令: Dism /online /export-driver /destionation:D:\DriverBackup ...
- 【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关
[Matlab开发]matlab中norm范数以及向量点积.绘图设置相关 标签(空格分隔): [Matlab开发] 声明:引用请注明出处http://blog.csdn.net/lg125915677 ...