STL与泛型编程-练习2-GeekBand
练习题目:
struct Programmer{
Programmer(const int id, const std::wstring name):
Id(id), Name(name){ }
void Print() const
{
std::wcout<<L"["<<Id<<L"]: "<<Name<<std::endl;
}
int Id;
std::wstring Name;
};
//2, 定义仿函数
//a, 使用ID升序排序
struct ProgrammerIdGreater : public std::binary_function< Programmer, Programmer, bool>{
bool operator() (const Programmer& p1, const Programmer& p2) const {
return (key1 <= key2) ? false : true;
}
};
//b, 使用Name来进行排序
struct ProgrammerNameComparer : public std::binary_function< Programmer, Programmer, bool>{
bool operator() (const Programmer& p1, const Programmer& p2) const {
return (p1.GetId() <= p2.GetId()) ? false : true;
}
};
void main()
{
//构建数组
Programmer vp[6] = {
Programmer("Andrei", 6),
Programmer("Stanley", 5),
Programmer("Plaught", 4),
Programmer("BillGates", 3),
Programmer("Fowler", 2),
Programmer("Meyes", 1)
};
//构建set
std::set<Programmer, ProgrammerIdGreater > dest(vp, vp+6);
//遍历set
std::for_each( dest.begin(), dest.end(), std::mem_fun(&Programmer::Print) );
//将dest中的BillGates改为David
std::set<Programmer, ProgrammerIdGreater>::iterator it = dest.find(Programmer("BillGates", 3));
if(it != dest.end())
const_cast<Programmer&>(*it).SetName("David");
//遍历set
std::for_each( dest.begin(), dest.end(), std::mem_fun(&Programmer::Print) );
//新set2用名字排序
std::set<Programmer, ProgrammerNameComparer > dest2(dest, dest+6);
//遍历set2
std::for_each( dest2.begin(), dest2.end(), std::mem_fun(&Programmer::Print) );
}
STL与泛型编程-练习2-GeekBand的更多相关文章
- [GeekBand] STL与泛型编程(1)
在C++语法的学习过程中,我们已经对模板有了基本的了解.泛型编程就是以模板为工具的.泛化的编程思想.本篇文章介绍了一些在之前的文章中没有涉及到的一些模板知识.泛型编程知识和几种容器.关于模板的一些重复 ...
- [GeekBand] STL与泛型编程(2)
本篇文章在上一篇文章的基础上进一步介绍一些常用的容器以及STL的一些深入知识. 一. Stack和Queue 栈和队列是非常常用的两种数据结构,由deque适配而来.关于数据结构的知识这里就不在介绍了 ...
- [GeekBand] STL与泛型编程(3)
本篇文章主要介绍泛型算法中的变易.排序.数值算法. 一. 变易算法 所谓变易算法是指那些改变容器中的对象的操作. 1.1 copy组 template <class InputIterator, ...
- STL与泛型编程-第一周笔记-Geekband
1, 模板观念与函数模板 简单模板: template< typename T > T Function( T a, T b) {- } 类模板: template struct Obje ...
- STL与泛型编程(第一周)
part 1 C++模版简介 一,模版概观 1.模板 (Templates)是C++的一种特性,允许函数或类(对象)通过泛型(generic types)的形式表现或运行. 模板可以使得函数或类在对应 ...
- STL与泛型编程-学习2-GeekBand
9, 容器 Deque 双向队列 和vector类似, 新增加: push_front 在头部插入一个元素 pop_front 在头部弹出一个元素 Deque和vector内存管理不同: 大块分配内存 ...
- STL与泛型编程第一周作业
/* 题目: 给定一个 vector:v1 = [0, 0, 30, 20, 0, 0, 0, 0, 10, 0],希望通过not_equal_to 算法找到到不为零的元素,并复制到另一个 vecto ...
- C++ STL泛型编程——在ACM中的运用
学习过C++的朋友们应该对STL和泛型编程这两个名词不会陌生.两者之间的关系不言而喻,泛型编程的思想促使了STL的诞生,而STL则很好地体现了泛型编程这种思想.这次想简单说一下STL在ACM中的一些应 ...
- 泛型编程、STL的概念、STL模板思想及其六大组件的关系,以及泛型编程(GP)、STL、面向对象编程(OOP)、C++之间的关系
2013-08-11 10:46:39 介绍STL模板的书,有两本比较经典: 一本是<Generic Programming and the STL>,中文翻译为<泛型编程与STL& ...
随机推荐
- 两个table合并
1.两个一样的table合并用Merge函数即可合并(但要求table要有主键id) DataTable1.Merge(DataTable2); 2.没写完,以后继续补充(只有经过笔者验证,能用的才会 ...
- vue v-show指令
demo: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- vagrant virtualbox 导入已导出的包和导出笔记
导入 安装好virtualbox,vagrant软件之后, 将预先打包的 box 镜像导入到 vagrant 中 命令格式 vagrant box add <name> <boxpa ...
- 校园商铺-4店铺注册功能模块-4Dto之ShopExecution的实现
1. DTO:添加店铺的返回类型 问题:为什么不直接用实体类Shop呢? 原因:在操作Shop的时候,必然会有一个状态.添加店铺,添加成功,还是添加失败? 如果添加失败,失败是一个什么状态,这些都是要 ...
- CSS——元素的显示与隐藏
元素的显示与隐藏 在CSS中有三个显示和隐藏的单词比较常见,我们要区分开,他们分别是 display visibility 和 overflow. 他们的主要目的是让一个元素在页面中消失,但是不在文档 ...
- x-杂项-maven-repository-lombok-intro:使用PROJECT LOMBOK减少BOILERPLATE代码
ylbtech-杂项-maven-repository-lombok-intro:使用PROJECT LOMBOK减少BOILERPLATE代码 1.返回顶部 1. REDUCING BOILERPL ...
- System.Web.Mvc.Filters.IAuthenticationFilter.cs
ylbtech-System.Web.Mvc.Filters.IAuthenticationFilter.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Cultu ...
- VI/VIM 无法使用系统剪贴板(clipboard)
来自: http://www.bubuko.com/infodetail-469867.html vim 系统剪贴板 "+y 复制到系统剪切板 "+p 把系统粘贴板里的内容粘贴到v ...
- Eclipse添加git插件及操作
注册账号新建仓库 在Github已经注册成功自己的账号 新建一个仓库 创建成功后记住url: 安装Git插件 首先像安装Pydev一样 点击help的Install New Software 点击Ad ...
- sql 字符串连接
const string FMCG_BASH = "清除重复商品"; var sqls = new List<string>(); //// Fmcg sqls.},R ...