2008-05-12

传一个数组的引用

关键字: c++
我们知道 给一个函数传入一个数组的时候需要传入一个附加的参数 用来标示数组的大小   void print(const unsigned short * const p, const size_t n) { cout << "sizeof(p): " << sizeof(p) << endl; for (size_t i = 0; i < n; ++i) { cout << p[i] << endl; } } int main() { cons ...
策略模式 其实我觉得介绍不需要太多 因为大家都已经很熟悉这个模式了, 一个实体类 保存一个对策略的接口, 一个策略接口 定义策略的公共接口 策略的实现 对接口的实现 关于策略模式的UML类图我也就不画了,在网上一搜就是一大堆。   我想说的是,其实策略模式主要就是面向对象的一个重要的基本方法,首先考虑组合然后是公共继承。 这段话在很多书里面都有出现过。但是我们大家很少有这么样思考的。一般来说开始都是继承继承,一个基类不行再加一个接口,就像书中所演示的,一个鸭子的类,可以用这么复杂的继承,那么如果是人类的话估计这个就复杂的无法收拾了。 这就是基本的方法的重要性。 ...
  • 23:26
  • 浏览 (67)
  • 评论 (0)
# The readfpl accept a file's path while is fpl(foobar play list), # and return a list which holds all the file'path sub readfpl { my @files; my @chunks; my $index = 0; open(INPUT, "< $_[0]") or die "can't open"; @chunks = split(m{file://}, <INPUT>); ...
  • 00:21
  • 浏览 (106)
  • 评论 (0)
2007-12-02

红黑树

 关于红黑树的定义:红黑树的定义 1 节点不是红的就是黑的2 根节点和叶子节点为黑的3 红色节点的父亲节点是黑的4 从根节点到叶子节点 走过的黑色节点的数目是相同的红黑树是一种比较复杂的数据结构 复杂的地方在于他的插入和删除后的平衡问题在插入时 的平衡:1 插入的是红色的节点2 如果它的父亲是黑色的 就做第八步3 如果它的父亲是红色的而且它有叔叔节点也为红色的 那么把他的父亲和叔叔节点都设为黑色的 祖父节点设为红色的 然后对爷爷 重新进行第2步4 如果他没有树树节点或者叔叔节点为黑色 那么再看 如果他相对于父亲的位置与父亲相对于祖父的位置 如果一致 走到第6 5 如果不一致 那么对他 ...
  • 22:05
  • 浏览 (90)
  • 评论 (0)
内存分配的两种方式 UNIX System V的malloc使用的是 first fit 为此 我一直觉得很奇怪 为啥 为啥 有best不用 为啥要用那个first 奇怪为此我傻瓜了好久 今天 项目空闲时 想明白了 呵呵因为 我们不一定能找到最适合的大小的内存 可能每次还都是会有些碎片的 如果使用best fit 万一每次都没有找到的话 那么每次产生的碎片都是最小的 这样的碎片可能对以后都没有什么用处了而如果使用first fit 就不会每次都产生最小的碎片 而是产生的碎片可能比较大 下次申请的时候  可能这么段刚好给它用了 完美而且还有效率的考虑 如果4G的内存 每次分配都遍历一次 ...
  • 12:29
  • 浏览 (84)
  • 评论 (0)
首先 是寄存器的介绍 寄存器名     说明                            功能 eax:            累加器  &nbs ...
  • 20:18
  • 浏览 (282)
  • 评论 (0)
与STL的实现不同 在boost中 他们使用的是模板片特化来实现的type traits 基本思想就是 默认大部分都不支持某种特性 然后 当某个类型支持时就为他特化一个类 支持这样的特性 感觉这样写的话 在特化的时候会不会代码会比较多呢 ... 具体就是 template<typename T> class something { // 在这里写对广大的类的操作 } 然后对于特殊的类型 譬如说 int template<> class something<int> { //然后在这里写对Int做的特殊的操作 } 而为了type traits来说 它 ...
  • 23:13
  • 浏览 (74)
  • 评论 (0)
 模板的引入 使c++产生了泛型的算法 泛型的容器 这两个是个好东西 但是在将两项技术结合的时候产生了一个问题 就是在写程序的时候要暴露对象的类型 就像这个样子 : template<typename T> vector<T>::iterator find(const T& ) { ........ } 而如果暴露了类型的话 那么就不能写一段代码而完成问题了 必须为每种容器都写出相同的算法 怎么办呢 可以在find中传出两个参数 template<typename T> vector<T>::iterator find( ...
  • 23:09
  • 浏览 (85)
  • 评论 (0)
template<typename T, typename U> class Conversion {     typedef char Small;     class Big{char dummy[2];};     static Small Test(U)    {   }       static Big Test(...)  { }   &nbs ...
  • 16:29
  • 浏览 (60)
  • 评论 (0)
在某坛子里面逛 看到有些人再批 if( p == NULL ) delete p;p = NULL;很好奇的看了下去 原来 delete 和 free都是支持NULL指针的啊  C99 7.20.3.2 The free function The free function causes the space pointed to by ptr to be deallocated, that is, made available for further allocation. If ptr is a null pointer, no action occurs. C++98 5.3.5 ...
  • 10:46
  • 浏览 (57)
  • 评论 (0)
DraculaW
搜索本博客
博客分类
最近加入圈子
存档
最新评论