随笔分类 - C++标准
摘要:先谈谈模板在我脑子里的典型吧template<class T>const T& GetMax(const T& t1, const T& t2){ return t1>t2?t1:t2;}如上面的代码,这是一个模板函数(template function)。要使用这个函数,传入的参数必须满足>运算符的条件。在C#中有where关键字,很可惜C++的模板没有这种限制。而据说BS本人也一再声明C++的模板不需要这种限制,作为一个初学者,其中缘由就不得而知了。template并非一次编译便生成适合所有类型的代码,而是针对被使用的某个(组)类型进行编译。
阅读全文
摘要:起因是我在尝试Win8的时候做的一个小程序,我将它上传到了网上。于是有一个学生来找我学习,但我的C#造诣仅仅只是一本《C#与.NET4高级程序设计》,然后有一天他们的老师布置给他们一个关于C#模板的作业的时候,我对一直以来的机械式函数使用产生了疑惑。 在某一段时间我曾使用CSharp语言进行开发,在.net2.0之后CSharp支持模板,也挺喜欢它的模板的使用方式,比如where关键字。我怀疑过基于OO的C#既然有一个object基类为什么还需要模板,我的入门书老师在引入模板章节的时候告诉我,是因为装箱和拆箱的操作太耗。 我更偏向于把自己定位成一个C++程序员,为了理解C++中模...
阅读全文
摘要:STL中的顺序容器有: vector //支持快速随机访问 list //支持快速插入删除 deque //双端队列顺序容器适配器: stack //LIFO queue //FIFO priority_queue //有优先级管理的队列我不是很明白adapter适配器的意思。这个词太布宜诺斯艾利斯了。以前接触到的有电源适配器,网络适配器,等等,在我的脑子里直接会被替换成另一个词汇,比如变压器,网卡之类的。估摸着大概就是特殊应用的工具这种意思。言归正传, 重复造轮子一直以来都是我乐此不疲的事情,所以此番是第一次学习STL。顺序容器...
阅读全文
摘要:学C#的时候用C#的事件很舒服,像我这样低级的使用者,一个+=就省去了许多麻烦。于是我想着C++中是怎么做呢?不如山寨一下。第一步,首先是委托这个好像是C++中的函数指针,那么就这样typedef void (*CREventFunc)(void* sender, void* param);模仿C#的事件,第一个参数是事件发生者的指针,第二个是事件参数。但是呢,因为懒啊,具体类型没有考虑去规定,暂且先void*用着吧。第二步,定义山寨的Event类因为C#的事件貌似是个链表一样的存在。。。所以就在里面搞个链表似的东东吧。然后是要重载+=和-=两个操作符,这个是山寨事件用法的关键哦~在触发事件的
阅读全文