C++
文章平均质量分 76
lyskyly
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
绪章 Boost 学习笔记之一 any
本人生性做事不认真, 又不善于总结,为一改前貌,决定每周写一点东西,以此督促自己改掉以前的臭毛病. 首先列出源代码,来给俯瞰全局 class any { public: // structors any() : content(0) { } templa原创 2006-10-23 13:20:00 · 2572 阅读 · 0 评论 -
Visual C++ 2008 Feature Pack发布,可以在VS中直接使用tr1了
This feature pack also includes an implementation of TR1. Portions of TR1 are scheduled for adoption in the upcoming C++0x standard as the first major addition to the ISO 2003 standard C++ library. Ou原创 2008-01-11 10:06:00 · 1228 阅读 · 0 评论 -
C++模拟C# lock关键字
C#的lock关键字用起来非常的爽。偶最近的winst库也想模拟一个.C#中的lock关键字实际上是用Monitor类来实现的,所有首先需要一个Monitor类 class Monitor { typedef Pairint, CriticalRegion> Count; static Mapvoid*,原创 2007-12-19 08:37:00 · 1898 阅读 · 1 评论 -
C++模拟委托实现
最近这段时间在仿造.net的部分库,写一个小型的C++类库。既然要模仿.net,那么委托是少不了的。本来想直接使用boost::function, 但他没有实现operator==, 不太好实现多播委托。boost :: signal 库需要调用编译好的动态库,不符合我的要求,而且他的disconnect的实现让人很不满意,必须把在在调用connect时返回的哪个对象保存起来才能调用dis原创 2007-11-30 07:50:00 · 1047 阅读 · 0 评论 -
道有万千,我取其一
前两天看了刘未鹏大侠关于C++学习的那篇文章,推崇学习C++时,不要把语言细节放在第一位。http://blog.youkuaiyun.com/pongba/archive/2007/05/16/1611593.aspx这是网址,这篇文章和其回复很是值得一读。初看这篇文章很是赞同,自己也曾沉溺与语言细节。C++是一们很奇特的语言,正如刘大侠所言,C++的语法本身并不是想传闻中那么复杂,就因为这原创 2007-06-03 00:44:00 · 1611 阅读 · 4 评论 -
使用SWIG实现C/C++与其他语言间的互相调用
为了运行速度,java, C#, ruby等语言可能会调用C/C++写的函数或者类,但直接写很麻烦,必须遵循各种语言订立的规范,以jni为例要导出一个函数给java用,你必须在函数定义前写上JNIEXPORT,对于那些早已存在的代码,这样就麻烦了,而且相同的代码如果要给ruby用,又得按照扩展Ruby的规定去重新定义这些函数。并且不能将C++定义的类直接拿来用但SWIG能很方便,很自然的原创 2007-07-29 13:33:00 · 4594 阅读 · 1 评论 -
杂谈 ―― 这几天学习C++的流水帐
放假回家一个半月,这一个半月没有接触电脑。昨天找了个代理(万恶的校园网竟然不能直接上国外网站。)上了herb sutter的blog去看了看,C++ 0x的草案年内就能完成,比较有意思的是强制编译器提供一个可选的垃圾回收器。看了一篇国内blog和后面的评论。垃圾回收器引起的争论很多,C++的中坚派都不太同意这个为新手设置的垃圾回收器。很有趣,如果存在这么大的争论不知道到时候出来后大家会不会原创 2007-03-13 11:12:00 · 1245 阅读 · 0 评论 -
Lambda 学习笔记 杂感
今天看了boost中的Lambda,第一映像是丑陋,看了几个例子发现还有点意思,一些实现使用它比起以前的用标准库中的东东来做看起来顺眼的多。完全可以代替functional中那些std::plus之流。不过继续看下去看到Lambda表达式中的控制结构,又觉得很丑陋起来。比起以前的托管C++有得一拼,虽然不习惯C++/CLI的语法,但看起来也比它好多了。当然感觉都是很主观的东西,或许我觉得丑陋原创 2006-12-22 09:14:00 · 1179 阅读 · 0 评论 -
Boost学习笔记 operators
如果一个类要实现operator, operator+=,等其它操作符。只要提供了operator,operator+=等其它操作符。而且这种实现是单调的operator>(const T& x, const T& y) { return y 所以boost提供了这些实现,只要提供了最基本的操作符,那些重复的劳动就不用自己去做了 首先要看一下CRTP模式――――――――――原创 2006-12-15 19:22:00 · 1561 阅读 · 0 评论 -
Boost学习笔记 BOOST_STATIC_ASSERT
Boost中提供了一个编译时断言宏BOOST_STATIC_ASSERT,这个宏很简单,但里面也有一些值得学习的地方。首先来看看真正做事的代码template bool x> struct STATIC_ASSERTION_FAILURE; template struct STATIC_ASSERTION_FAILUREtrue> { enum { value = 1 };原创 2006-12-05 07:46:00 · 3324 阅读 · 0 评论 -
Boost学习笔记之六 深度剖析pool
很久没看boost源码了,今天又拿来看了看,这次看了boost中一个内存池的实现,感觉很不错,但似乎里面重复代码多了一点: )先来看一个辅助结构,这个辅助结构用模板元编程实现获得最小公倍数和最大公约数求最大公约数时用的是欧几里得算法(这里为了让这个模板更容易看懂,做了一些简化工作).template struct ct_gcd_helper; template stru原创 2006-11-25 23:48:00 · 2412 阅读 · 1 评论 -
引用 ------- 防止意外的隐式转型
一个函数的参数是int如果,那么你传递一个char类型的变量也能通过编译,编译器会为你自动转型为int.有时候这很方便,但有时候这却是恶梦.但如果这里的参数是int&,那么编译器没有能力为你干转型这件事了.(虽然道理很浅显,但平时一直没有特意注意引用的这个功能,昨天偶然之间想到了: ) ) void TestVal(int a){} void TestRef(int原创 2006-11-19 09:09:00 · 1009 阅读 · 0 评论 -
ACE学习笔记 ----- 一个简单的网页链接提取程序
一个简单得提取网页上的链接的小程序#include#include#include"boost/regex.hpp"#include"ace/INET_Addr.h"#include"ace/SOCK_Stream.h"#include"ace/SOCK_Connector.h"#include "ace/Time_Value.h"#include"ace/Log_Msg.h"us原创 2006-11-18 13:09:00 · 1929 阅读 · 0 评论 -
C++经典对话上关于模式的两篇好文章
偶然在网上找到C++经典对话系列这本好书,一本非常不错的书,感谢作者和译者们,下面是节录其中和设计模式有关的两篇 Abstract Factory, Template Style “我们知道这是什么吗?”我指着放在前面金属台上的设备。这是在冰原下勘探到的第一批物体之一。 珍妮摇着头。”没呢,伙计。它可转载 2006-11-08 09:02:00 · 1670 阅读 · 0 评论 -
参数自动选择引用类型还是值类型
对于泛型编程而言,不知道类型的大小,就不好判断选择传递参数时该选择值类型还是引用类型.对int,char这样的型别运用引用反到会使效率降低.下面是参考C++设计新思维的一个实现.首先是一个型别选择器,根据flag标志判断是选择T,还是选择U,通过模板特化,当flag为true时选择T,当flag为false时选择U templatebool flag, typename T原创 2006-11-02 19:48:00 · 892 阅读 · 0 评论 -
Boost学习笔记之五 bind
Bind是boost中非常有用的一个组件,它比标准库中的bind1st和bind2nd更强大,更直观。好了现在开始剖析。 int x = 1; int y = 2; boost::bind(fun,_1,_2)(x,y);首先看看这段代码做了什么?boost::bind(f,_1,_2)返回一个函数对象。让我们来看看具体函数调用。(这里的bind实际上不是调用下面原创 2006-10-28 12:13:00 · 1239 阅读 · 0 评论 -
vector针对大对象的优化
vector在可用空间不足,进行某些插入操作的时候就会重新分配空间,然后再进行一系列的拷贝工作,如果对象比较大,那么拷贝起来是非常缓慢的。有没有办法提高拷贝时的速度呢。办法是有的。那就是以空间换取时间。vector只存取大对象的指针。指针的大小是固定的,比较小的。这样就能提高拷贝的速度。当然如果是小对象也那么干,速度不但不会提升,反到会下降。白白多了一些内存分配动作。下面是一个实现:#ifnd原创 2006-10-24 12:24:00 · 1945 阅读 · 1 评论 -
C++中 unsigned char != byte
C++中不存在内建的byte类型,通常我们会通过typedef unsigned char byte;这一类的方式来定义byte类型,但就此认为unsigned char可以完全代表byte类型,就得注意了。byte a = 0x30;cout我们期待输出是什么,期待输出0x30,实在不行好歹也输出个48吧,出乎意料的是输出0.0的ASCII码是0x30,这里把a当作uns原创 2008-10-02 16:05:00 · 11835 阅读 · 1 评论
分享