STL与泛型编程-练习2-GeekBand
2016-04-13 22:47
369 查看
练习题目:
![](http://img.blog.csdn.net/20160413224636207)
![](http://img.blog.csdn.net/20160413224621660)
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) ); }
相关文章推荐
- 用c++实现的简单的日期类
- ruby安装笔记
- Java进阶05 多线程
- Python dict del
- 对JAVA集合进行遍历删除时务必要用迭代器
- bzoj 3396 [Usaco2009 Jan]Total flow 水流
- 初识C++之多态
- java 路径读取学习
- 9.Python笔记之面向对象高级部分
- c++第2次作业
- Java进阶04 RTTI
- eclipse新建文件模板默认charset=ISO-8859-1解决
- 第六周-总结&结对编程
- Dedecms recommend.php SQL注入漏洞
- 【C++】迭代器的失效
- java编程思想第四版-嵌套类
- Java进程、线程
- SpringMVC详细示例实战教程
- DedeCMS group.php SQL注入漏洞
- 第3周 C语言及程序设计初步例程-40 穷举法解题