C++面向对象编程分享07----20160407_李楚煌
来源:互联网 发布:目标软件怎么样了 编辑:程序博客网 时间:2024/06/07 10:04
#include <iostream>#include <algorithm>#include <functional>#include <string>#include <iterator>#include <set>using namespace std;class Programmer{public:Programmer(const int id, const wstring name) //初始化 :Id(id), Name(name){}void Print()const{wcout << L"[" << Id << L"] : " << Name << endl;}Programmer SetName(wstring Name){this->Name = Name;return *this;}wstring GetName(){return Name;}int Id;wstring Name;};struct ProgrammerIdGreater {bool operator()(Programmer p1,Programmer p2){return(p1.Id < p2.Id) ? true : false;}};struct ProgrammerNameGreater {bool operator()(const Programmer&p1, const Programmer&p2)const{return (p1.Name < p2.Name) ? true : false;}};void initial(Programmer const& obj){obj.Print();} int main(){wcout<<Programmer(1, L"get a name").GetName();const int size = 6;const Programmer personArray[size] = {Programmer(1, L"Scott Meyers"),Programmer(2, L"Martin Fowler"),Programmer(3, L"Bill Gates"),Programmer(4, L"P.J. Plaught"),Programmer(5, L"Stanley B. Lippman"),Programmer(6, L"Andrei Alexandrescu"),};set<Programmer, ProgrammerIdGreater>ps1(personArray, personArray + size);set<Programmer, ProgrammerNameGreater>ps2(personArray, personArray + size);cout << "(order by Id)以下是各个人物的ID,名字:" << endl;for_each(ps1.begin(), ps1.end(),initial);cout << endl;cout << "查找Bill Gates:" << endl;set<Programmer>::iterator it= ps1.find(Programmer(3, L""));if(it != ps1.end()){wcout << (*it).Name << " " << (*it).Id << endl;}cout << endl;set<Programmer>::iterator it2= ps2.find(Programmer(3, L"Bill Gates"));if (it2 != ps2.end()){const_cast<Programmer&>(*it2).SetName(L"David Vandevoorde");}cout << "(order by Name)以下是各个人物的ID,名字:" << endl;for_each(ps2.begin(), ps2.end(),initial);cout << endl;system("pause");return 0;}
整段代码最值得分析的地方在:
set的定义是:
它的两个参数是分别是 可复制、可拷贝的类型 和 排序准则。
set是关联式容器,通过红黑树实现,
上述画红线的句子酷的地方在于将set和数组组合在一起了,
更准确点讲,以数组的方式将元素放入set容器。
set<int> s2(s1.begin(),s1.end());这行代码有助于理解, 即set容器声明了,怎样initial呢? :
(s1.begin(),s1.end())
以上。
1 0
- C++面向对象编程分享07----20160407_李楚煌
- C++面向对象编程分享----20160301_李楚煌
- C++面向对象编程分享02----20160311_李楚煌
- C++面向对象编程分享03----20160317_李楚煌
- C++面向对象编程分享04----20160322_李楚煌
- C++面向对象编程分享05----20160326_李楚煌
- C++面向对象编程分享06----20160404_李楚煌
- C++面向对象编程分享08----20160422_李楚煌
- C++面向对象编程分享09----20160429_设计模式_李楚煌
- 面向对象_链式编程
- 013_《Delphi面向对象编程思想》
- 黑马程序员_面向对象编程初步
- 黑马程序员_面向对象编程
- 黑马程序员:Java编程_面向对象
- 学习笔记_面向对象编程
- python基础八_面向对象编程
- C语言面向对象编程
- C语言面向对象编程
- 【剑指offer系列】 数值的整数次方___11
- struts2 注解 同时 使用 *_*_*_*等
- PHP中的魔术方法和魔术常量简介和使用
- 6.2.4 QMGR_TRANSPORT:MDA信息
- 前端学习笔记03,CSS
- C++面向对象编程分享07----20160407_李楚煌
- JAVA本地方法详解,什么是JAVA本地方法?
- C++实现——大数阶乘
- Android Studio布局渲染
- 动作特效
- ubuntu--添加新硬盘
- factory | factory methods | static factory methods
- java 回调函数的入门Demo
- 6.2.5 QMGR_QUEUE:收信域信息