#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
struct Node
{
char a;
int b;
}; void func(Node &t)
{
cout << t.a << " " << t.b << "\n"; //使用换行,尽量使用\n,endl的效率会慢很多
//这里只会打印结构体中的b 因为对于int了类型的0可以直接打印,对于char类型的0,他会找到0对应的assic码,而0对应的assci码无法在控制台打印
cout << "强制转换 " << (int)t.a << "\n";
}
int main()
{
list<Node> li; //无参构造 list<Node> li1(); //结构体重的元素被初始化为0
for_each(li1.begin(), li1.end(), func); return ;
}
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
struct Node
{
char a;
int b;
}; void func(Node &t)
{
cout << t.b << " " << t.a << "\n";
}
int main()
{ Node node = { 'a', };
list<Node> li(, node);
for_each(li.begin(), li.end(), func); cout << "***************************************\n";
list<Node> li2(li);
for_each(li2.begin(), li2.end(), func); cout << "***************************************\n";
list<Node> li3(li.begin(),li.end());
for_each(li3.begin(), li3.end(), func); list<Node>::iterator ite = li3.begin();
while (ite != li3.end())
{
cout << ite->a << " " << ite->b << "\n";
ite++;
}
return ;
}
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
struct Node
{
char a;
int b;
}; void func(Node &item)
{
cout << item.a << " " << item.b << "\n";
}
int main()
{
Node node = { 'a', };
list<Node> li(, node);
cout << "list中有多少个元素: " << li.size() << "\n";
cout << "这个list是否为空 " << li.empty() << "\n";
for_each(li.begin(), li.end(), func); cout << "************************************************\n";
li.resize();
for_each(li.begin(), li.end(), func);
cout << "经过resize改变后的容量: " << li.size() << "\n";
cout << "这个list是否为空 " << li.empty() << "\n"; cout << "************************************************\n";
li.resize();
for_each(li.begin(), li.end(), func);
cout << "这个list是否为空 " << li.empty() << "\n"; return ;
}
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
struct Node
{
char a;
int b; Node(char c, int d)
{
a = c;
b = d;
}
}; void func(Node &t)
{
cout << t.a << " " << t.b << "\n";
}
int main()
{
Node node('a', ); //挡结构体中有初始化函数,要像使用类一样去定义这个结构体变量
list<Node> li(, node); li.push_back(Node('b', )); //输入元素
li.push_front(Node('c', )); cout << "li.front a " << li.front().a << "\n"; //输出元素
cout << "li.back a " << li.back().a << "\n"; //在中间添加元素
list<Node>::iterator ite = li.begin();
ite++;
li.insert(ite, Node('d', )); //第一个参数是一个迭代器,第二个参数是要插入的节点元素
li.insert(ite, , Node('e', )); //插入三个相同的元素 for_each(li.begin(), li.end(), func); return ;
}
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
struct Node
{
char a;
int b; Node(char c, int d)
{
a = c;
b = d;
} bool operator == (const Node& t) //要使用list中的remove函数就必须重载这个函数
{
if ((t.a == this->a) && (t.b == this->b))
{
return true;
}
else
{
return false;
}
}
}; void func(Node &t)
{
cout << t.a << " " << t.b << "\n";
}
int main()
{
list<Node> li;
li.push_back(Node('a', ));
li.push_back(Node('b', ));
li.push_back(Node('c', ));
li.push_back(Node('d', ));
li.push_back(Node('e', ));
li.push_back(Node('d', )); //li.pop_back(); //尾删除
//li.pop_front(); //头删除 list<Node>::iterator ite = li.begin();
ite++;
li.erase(ite); //删除一个指定的元素
//这个函数里面还可以放两个迭代器,表示删除这一段元素 li.remove(Node('e', )); //当这个list中有与之一致的结点就删除这个结点,有多个的情况下就删除多个
li.unique(); //去重 li.assign(, Node('a', )); //重新赋值
//这个函数还可以传入两个迭代器,表示用迭代器中间的元素来重新赋值这个list对象 for_each(li.begin(), li.end(), func); return ;
}
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
struct Node
{
char a;
int b; Node(char c, int d)
{
a = c;
b = d;
} bool operator < (const Node& t) //使用sort函数,要重载<
{
if ( t.b < this->b)
{
return true;
}
else
{
return false;
}
}
}; void func(Node &t)
{
cout << t.a << " " << t.b << "\n";
}
int main()
{
list<Node> li;
list<Node> li1;
li.push_back(Node('a', ));
li.push_back(Node('b', ));
li.push_back(Node('c', ));
li1.push_back(Node('d', ));
li1.push_back(Node('f', ));
li1.push_back(Node('e', )); li.swap(li1); //交换连个list对象 li.reverse(); //翻转这个list对象中的元素 li.sort(); //排序
for_each(li.begin(), li.end(), func); return ;
}
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
struct Node
{
char a;
int b; Node(char c, int d)
{
a = c;
b = d;
} bool operator < (const Node& t)
{
if ( t.b > this->b) //从小到大
{
return true;
}
else
{
return false;
}
}
}; void func(Node &t)
{
cout << t.a << " " << t.b << "\n";
}
int main()
{
list<Node> li;
list<Node> li1;
li.push_back(Node('a', ));
li.push_back(Node('b', ));
li.push_back(Node('c', ));
li1.push_back(Node('d', ));
li1.push_back(Node('e', ));
li1.push_back(Node('f', )); li.merge(li1); //排序函数需要注意几观点
//首先排序前 这两个list必须有序,且有序味相同性质(都是从小到大或者都是从大到小)
//当按照你设置的规则排序两个从小到大的list的时候,注意上面的重载
//当排序的list是从大到小的时候,就需要需要将上面的重载改变一下(改成相反的)
for_each(li.begin(), li.end(), func); return ;
}
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
struct Node
{
char a;
int b; Node(char c, int d)
{
a = c;
b = d;
} bool operator == (const Node t)
{
if ((t.a == this->a) && (t.b == this->b))
{
return true;
}
else
{
return false;
}
} }; void func(Node &t)
{
cout << t.a << " " << t.b << "\n";
}
int main()
{
list<Node> li;
li.push_back(Node('a', ));
li.push_back(Node('b', ));
li.push_back(Node('c', ));
li.push_back(Node('d', ));
li.push_back(Node('e', ));
li.push_back(Node('f', )); list<Node>::iterator ite = find(li.begin(), li.end(), Node('c', ));
cout << ite->a << " " <<ite->b << "\n"; //foreard_list 单向队列,有兴趣可以自行百度 return ;
}

STL---llist的更多相关文章

  1. 详细解说 STL 排序(Sort)

    0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算 ...

  2. STL标准模板库(简介)

    标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...

  3. STL的std::find和std::find_if

    std::find是用来查找容器元素算法,但是它只能查找容器元素为基本数据类型,如果想要查找类类型,应该使用find_if. 小例子: #include "stdafx.h" #i ...

  4. STL: unordered_map 自定义键值使用

    使用Windows下 RECT 类型做unordered_map 键值 1. Hash 函数 计算自定义类型的hash值. struct hash_RECT { size_t operator()(c ...

  5. C++ STL简述

    前言 最近要找工作,免不得要有一番笔试,今年好像突然就都流行在线笔试了,真是搞的我一塌糊涂.有的公司呢,不支持Python,Java我也不会,C有些数据结构又有些复杂,所以是时候把STL再看一遍了-不 ...

  6. codevs 1285 二叉查找树STL基本用法

    C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...

  7. STL bind1st bind2nd详解

    STL bind1st bind2nd详解   先不要被吓到,其实这两个配接器很简单.首先,他们都在头文件<functional>中定义.其次,bind就是绑定的意思,而1st就代表fir ...

  8. STL sort 函数实现详解

    作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不 ...

  9. STL的使用

    Vector:不定长数组 Vector是C++里的不定长数组,相比传统数组vector主要更灵活,便于节省空间,邻接表的实现等.而且它在STL中时间效率也很高效:几乎与数组不相上下. #include ...

  10. [C/C++] C/C++延伸学习系列之STL及Boost库概述

    想要彻底搞懂C++是很难的,或许是不太现实的.但是不积硅步,无以至千里,所以抽时间来坚持学习一点,总结一点,多多锻炼几次,相信总有一天我们会变得"了解"C++. 1. C++标准库 ...

随机推荐

  1. Elasticsearch学习总结--原理篇

    一.概念 1.1 官方文档 以下总结自ElasticSearch的官方文档以及自己的一些实践,有兴趣的可以直接阅读官方文档: https://www.elastic.co/guide/en/elast ...

  2. Python学习---网络文件上传

    中心思想: 传递过去文件的大小,根据文件的大小判断是否文件上传完成: 传递/接受文件采用分流的形式,每次传递/接受部分数据:  文件的读取均采用绝对路径实现,而且是bytes的形式读写 客户端: # ...

  3. January 20 2017 Week 3 Friday

    I am a slow walker, but I never walk backwards. 我走得很慢,但我从来不会后退. In the past years, I walked very slo ...

  4. She must be at least thirty-five years old.

    She must be at least thirty-five years old. Though life's goodness can at times be overshadowed,it i ...

  5. try...finally的用法

    finally里面只是执行完成try中的代码后,必须执行的代码,即使是try中有异常抛出,也是会去执行finally. >>> try: ... 1/0 ... finally: . ...

  6. 2.为ADF应用添加安全性认证

    1.打开ADF应用之后,选择Application==>Secure==>Configure ADF Security 2.在弹出框中选择ADF Authentication,一直Next ...

  7. BZOJ3033:太鼓达人(DFS,欧拉图)

    Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和ly ...

  8. SpringAop之日志管理

    导入的依赖均为JavaWeb界面在线配置代码生成器这篇文章,你只需将这篇文章的maven依赖导入即可. SpringAop利用注解的特性进行日志管理,只需在对应的方法上加上自己编写的注解,即可完美实现 ...

  9. 记一次重装系统后恢复EFS加密文件过程

    之前用了8年的win7系统被我删注册表给折腾挂了, 无法进入系统, 无法进入安全模式, 无法使用光盘修复 只能重装系统,习惯性的重装前GHOST备份了一下 今天忽然发现有好几个项目文件居然成了绿色的, ...

  10. java连接数据库增删改查公共方法

    package dao; import java.io.IOException; import java.sql.CallableStatement; import java.sql.Connecti ...