数组的引用 转载请注明原出处 http://blog.csdn.net/draculaw 或者 http://draulaw.javaeye.com msn: jackwang0728@hotmail.com我们知道 给一个函数传入一个数组的时候需要传入一个附加的参数 用来标示数组的大小void print(const unsigned short * const p, const size_t n) {
如何使VC2008E支持ATL/WTL 微软发布了最新的vc2008, 像05一样他也发布了Express版本供大家下载试玩, 不过很郁闷的是这个版本竟然不支持ATL 与MFC, 而我最近对ATL/WTL很有兴趣。怎么办呢?自己DIY一个支持ATL/WTL的VC2008E吧。首先 我们发现 他这里面没有ATL的源文件和lib 于是我们去其他地方找到了(找一个装着带有ATL的VC) include/atlmfc文件夹下面就是了把它拷过来,
红黑树 关于红黑树的定义:红黑树的定义 1 节点不是红的就是黑的2 根节点和叶子节点为黑的3 红色节点的父亲节点是黑的4 从根节点到叶子节点 走过的黑色节点的数目是相同的红黑树是一种比较复杂的数据结构 复杂的地方在于他的插入和删除后的平衡问题在插入时 的平衡:1 插入的是红色的节点2 如果它的父亲是黑色的 就做第八步3 如果它的父亲是红色的而且它有叔叔节点也为红色的 那么把他的父亲和叔叔节点
Best Fit与 First Fit 内存分配的两种方式 UNIX System V的malloc使用的是 first fit 为此 我一直觉得很奇怪 为啥 为啥 有best不用 为啥要用那个first 奇怪为此我傻瓜了好久 今天 项目空闲时 想明白了 呵呵因为 我们不一定能找到最适合的大小的内存 可能每次还都是会有些碎片的 如果使用best fit 万一每次都没有找到的话 那么每次产生的碎片都是最小的 这样的碎片可能对以后都没有什么
boost::type_traits 与STL的实现不同 在boost中 他们使用的是模板片特化来实现的type traits 基本思想就是 默认大部分都不支持某种特性 然后 当某个类型支持时就为他特化一个类 支持这样的特性 感觉这样写的话 在特化的时候会不会代码会比较多呢 ... 具体就是 template class something { // 在这里写对广大的类的操作 } 然后对于特殊的类型 譬如说 int templa
STL Type Traits 模板的引入 使c++产生了泛型的算法 泛型的容器 这两个是个好东西 但是在将两项技术结合的时候产生了一个问题 就是在写程序的时候要暴露对象的类型 就像这个样子 : template vector::iterator find(const T& ) { ........ } 而如果暴露了类型的话 那么就不能写一段代码而完成问题了 必须为每种容器都写出相同的算法 怎么办呢 可以在find中传
使用模板实现转换测试 template class Conversion { typedef char Small; class Big{char dummy[2];}; static Small Test(U) { } static Big Test(...) { } static T MakeT() { } public:
善用STL,节约代码量 在csdn上大家寫出了各種方式-@-可是... 都太復雜了 如 1 : void replace(char *pInput, char *pOutput, char *pSrc, char *pDst) { char *pi, *po, *p; int nSrcLen, nDstLen, nLen; pi = pInput; po = pOutput; nSrcLen = st
bigendian與littleendian的兩種測試方式 其實只需要這樣一段代碼 union UA { int a; char c[4]; }u; u.a = 0x12345678; cout 如果輸出的第一個為 78那么就是小端 如果是12 就是大端。 但是 有時候 需要在編譯期 確定
將foobar的播放列表中的文件整理起來的perl代碼 # The readfpl accept a files path while is fpl(foobar play list), # and return a list which holds all the filepath sub readfpl { my @files; my @chunks; my $index = 0; open(INP
Overlapped I/O 與 I/O Completion Port Model Overlapped I/O是Windows對I/O操作的一個封裝 他可以用在文件,socket等很多地方 用來從I/O設備讀寫數據 一般來說 用BSD socket的話 就需要為讀寫專門起一個線程 由自己處理讀寫的操作。這樣不能說不好,但是如果有人幫處理過了可以減輕負擔,那就太好不過了 于是MS就推出了Overlapped I/O這個操作模式 它的本質也是操作系統起一個線程來處理讀寫。但是省去了
Berkeley Socket I/O Models Blocking I/O Model 阻塞模式 最简单的模式 函数一直等着直到有数据过来 基本上IO操作都会用一个Work Thread来进行Nonblocking I/O Model 非阻塞模式 不停的查询是否有数据传来 并进行操作 I/O Multiplexing Model多路复用模式 使用select等到他返回后 然后调用相关的函数来处理相关的 IO