- 浏览: 498499 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jkxydp:
算法运行的结果根本就不对。
BM算法. -
soarwindzhang:
感谢博主的分享,我今天看了您的UFSET非递归的路径压缩时感觉 ...
并查集 -
zhangning290:
楼主好像只考虑了坏字符规则,。没有考虑好后缀
BM算法. -
lsm0622:
文字描述有错误 误导新学者
求有向图的强连通分量(scc):Tarjan算法 -
knightchen:
博主,你太强了!这篇文章对我学习C++多线程很有帮助!谢谢
并发学习之一_windows下ZThread在CodeBlocks上的安装与配置
1,这个实例采用了使用计数策略.
2,实例代码:
2,实例代码:
#include <iostream> #include <string> #include <set> #include <map> #include <utility> #include <cstddef> #include <stdexcept> #include <algorithm> using namespace std; class Item_base { friend istream& operator>>(istream&, Item_base&); friend ostream& operator<<(ostream&, const Item_base&); public: virtual Item_base* clone() const { return new Item_base(*this); } public: Item_base(const string &book = "",double sales_price = 0.0): isbn(book), price(sales_price) { } string book() const //接口和实现 { return isbn; } virtual double net_price(size_t n) const //接口和缺省 { return n * price; } virtual ~Item_base() { } //基类必须的虚析构 private: string isbn; protected: double price; }; class Bulk_item : public Item_base //一个继承类 { public: Bulk_item* clone() const //配合计数句柄 { return new Bulk_item(*this); } Bulk_item(): min_qty(0), discount(0.0) { } Bulk_item(const string& book, double sales_price, size_t qty = 0, double disc_rate = 0.0): Item_base(book, sales_price),min_qty(qty), discount(disc_rate) { } double net_price(size_t) const; //继承的接口 private: size_t min_qty; double discount; }; double Bulk_item::net_price(size_t cnt) const { if (cnt >= min_qty) return cnt * (1 - discount) * price; else return cnt * price; } class Lim_item : public Item_base //第二个继承类 { public: Lim_item* clone() const { return new Lim_item(*this); } Lim_item(const string& book = "", double sales_price = 0.0, size_t qty = 0, double disc_rate = 0.0): Item_base(book, sales_price), max_qty(qty), discount(disc_rate) { } double net_price(size_t) const; private: size_t max_qty; double discount; }; double Lim_item::net_price(size_t cnt) const { size_t discounted = min(cnt, max_qty); size_t undiscounted = cnt - discounted; return discounted * (1 - discount) * price + undiscounted * price; } class Sales_item //计数句柄类 { public: friend class Basket; Sales_item() : p(NULL), use(new size_t(1)) {} Sales_item( const Item_base& item) : p(item.clone()), use(new size_t(1)) {} Sales_item(const Sales_item& s) : p(s.p), use(s.use) { (*use)++; } Sales_item& operator=(const Sales_item& rhs) { if( &rhs == this) return *this; (*rhs.use)++; decr_use(); p = rhs.p; use = rhs.use; return *this; } ~Sales_item() { decr_use(); } const Item_base* operator->() const { if (p) return p; else throw logic_error("unbound Sales_item"); } const Item_base& operator*() const { if (p) return *p; else throw logic_error("unbound Sales_item"); } private: Item_base* p; size_t* use; void decr_use() { if( --(*use) == 0) { delete p; delete use; } } }; inline bool compare(const Sales_item &lhs, const Sales_item &rhs) //比较函数,构造map容器. { return lhs->book() < rhs->book(); } class Basket //一个操作类 { typedef bool (*Comp)(const Sales_item&, const Sales_item&); public: typedef multiset<Sales_item, Comp> set_type; typedef set_type::size_type size_type; typedef set_type::const_iterator const_iter; Basket(): items(&compare) { } // 初始化 void add_item(const Sales_item &item) { items.insert(item); } size_type size(const Sales_item &i) const { return items.count(i); } double total() const; // sum of net prices for all items in the basket private: std::multiset<Sales_item, Comp> items; }; double Basket::total() const { double sum = 0.0; for (const_iter iter = items.begin(); iter != items.end(); iter = items.upper_bound(*iter)) { int num = items.count(*iter); double value = (*iter) -> net_price(num); cout << "ISBN: " << (*iter) -> book() << "\tnumber sold: " << num << "\ttotal price: " << value << endl; sum += value; } return sum; } int main() { Sales_item item1(Item_base("123", 45)); Sales_item item2(Bulk_item("345", 45, 3, .15)); Sales_item item3(Bulk_item("678", 55, 5, .25)); Sales_item item4(Lim_item("abc", 35, 2, .10)); Sales_item item5(Item_base("def", 35)); Basket sale; cout << "added first item" << endl; sale.add_item(item1); sale.add_item(item1); sale.add_item(item1); sale.add_item(item1); sale.add_item(item2); sale.add_item(item2); sale.add_item(item2); sale.add_item(item2); sale.add_item(item2); sale.add_item(item2); sale.add_item(item2); sale.add_item(item2); sale.add_item(item3); sale.add_item(item3); sale.add_item(item3); sale.add_item(item3); sale.add_item(item3); sale.add_item(item3); sale.add_item(item3); sale.add_item(item3); sale.add_item(item4); sale.add_item(item4); sale.add_item(item4); sale.add_item(item4); sale.add_item(item4); sale.add_item(item4); sale.add_item(item5); sale.add_item(item5); cout << "added last item" << endl; cout << sale.total() << endl; return 0; }
发表评论
-
C语言中的不定参数
2010-12-15 12:28 130231,最近刚刚知道C语言还有不定参数这么个东东。 2,解决方法 ... -
剖析浮点数
2010-12-10 10:39 1116[转载]http://blog.csdn.net/masefe ... -
存在虚基类时,类对象的大小
2010-12-09 19:38 11631, 实例代码: #include <iostrea ... -
关于父类的构造的顺序
2010-12-09 19:33 6141,没有虚基类的情况: #include <iost ... -
关于empty class的大小
2010-12-09 19:32 10661,首先简要说明下为什么empty class的大小不是0? ... -
JVM实现机制及内部基本概念
2010-12-09 19:27 812兴趣所致,搜了一些关于JVM的简单介绍,算是扫盲吧。 1.J ... -
指向对象成员变量的指针。
2010-12-09 19:18 10951,工作定了后,把《Inside the C++ object ... -
面向对象的一些常见问题总结。
2010-12-09 19:08 8711,构造函数中调用虚函数的问题。 注:一般编译器都会在执行完b ... -
关于C++的名字查找规则
2010-12-09 19:05 13191,总结一句话:由内向外,找到合适的即刻停止。 实例代码: ... -
继承下的名字查找规则,最近作用域
2010-11-06 20:04 8411, #include <iostream> ... -
虚基类和多重继承总结
2010-11-06 19:54 8191,虚基类,其构造函数总是在最后一个层次最先并且真正被执行。 ... -
为什么构造函数,不能是virtual?
2010-09-25 15:24 16281,C++语言是静态语言,而把构造函数写成虚函数意味这可以动态 ... -
大小端对应字节, 注意和一个字节内位序的区分
2010-09-09 10:11 13691,一个例子: #include <stdio.h& ... -
实现:不能被继承的类
2010-08-31 17:35 8101,首先想到的是在C++ 中 ... -
提升为N的倍数(N为2的指数次)
2010-07-18 10:16 7241,可以这么做: int num=15; num = (num ... -
C++ 中:new的用法
2010-07-17 16:26 1860先放这儿,有时间了,在 ... -
关于类的一些语法:
2010-06-02 09:26 671所谓"书越读越薄",这话说得真是有道理. ... -
sizeof(string对象)的大小
2010-06-01 11:32 14971,无语了,string对象的大小固定就是4啊. 2,实例代码 ... -
C语言中不同增值语句的区别
2010-05-12 12:50 6271, mango[i++]+=y; 被当作 mango[i]= ... -
尽量不要在一个表达式中有多个副作用
2010-05-02 10:48 9891,一般来说,编c/c++程序有一个纪律:一个语句中不要有两个 ...
相关推荐
包括了源代码,根据 VC 6.0的编程书籍中的例子修改而成的,向大家展示Windows程序内部运行原理,比如Windows应用程序,操作系统,计算机硬件之间的相互关系等,面向初学者参考的句柄例子。例子里面包括了了PPT教程,...
C#句柄开发实例,遍历窗体现在系统中运行的进程窗体、然后通过句柄操作,实现载图,特别说明,一些进程是不可视的,所以截图会黑屏,我们在后面会增加截图以后的OCR实现,请长期关注我们
C#得到所有窗口句柄简单实例源码 一个简单的实例 C#得到所有窗口句柄 C#调用api的简单实例
句柄应用的简单例子,可以根据鼠标移动位置的坐标 获得该坐标对应程序的句柄相关信息
this 引用句柄例子大解析this 引用句柄例子大解析
VB Spy获取进程句柄源码实例,列出出当前运行程序的窗口信息、子进程信息和鼠标坐标、句柄信息,程序可设置窗口总在最前端显示。
赋值后的静态句柄和实例莫名其妙消失了???在线等
VB读取句柄实例EnumerationX
VB查询QQ句柄并控制的实例
遍历已知父窗里子窗所有句柄 的实例
句柄获取示例(制作模块方便调用),使用的时候只要简单的调用一个自定义函数名就可以获取到指定软件的句柄,类名,跟名称。
本程序是完整的项目文件,在VS2008下运行成功,程序功能:通过传递主窗体句柄,然后打开子窗体,在子窗体中可对主窗体的控件或函数进行操作,改变其控件属性 ,调用主窗体的函数,(注:在调用前要修改主窗体被调用控件或函数...
vb获取窗体上的控件句柄的例子程序,相当的不错。
要使用到的函数: DWORD GetWindowThreadProcessId( HWND hWnd, //目标窗口句柄 LPDWORD lpdwProcessId //返回目标窗口对应进程ID ); 例子: DWORD dwProcId=0;//存放返回的进程ID DWORD dwThreadId=0;//存放...
c#获取窗体句柄模拟鼠标点击实例2012年8月20日23:48:21,代码清楚,有详细注释,希望对大家有用
易语言中获取句柄的实例,有需要的可以下载啊
使用OpenGLES基于Windows的窗口句柄进行渲染YUV序列,内附实例可直接运行。 包括YUV444P和YUV420P
实现了按照textbox3获得的句柄值,将textbox2的消息发送至目标 c# 已知一个程序的控件句柄发送系统消息的实例,另附送全局热键
MFC 中各种句柄的获得、各种指针的获得,各种转换,方便开发查阅
API实例源码 窗口句柄,坐标,进程名获取。@夜神希。Tags:API实例源码。