摘要: http://www.jellythink.com/archives/82 阅读全文
posted @ 2013-11-14 17:57 igody 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 面试某公司的时候,某技术主管说你这delete前没有判断指针是否为NULL,当时我就……看来这是个传说中的好习惯,每当delete一个指针的时候,要先判断是不是NULL。比如:if ( p != NULL) delete p;C++标准规定,delete (void*)0;是安全的。二现在的编译器通常都会有一个#define NULL 0的宏所以,delete NULL也是安全的,是一个空操作;另外,我们真正需要在delete时做的事情是:在delete后,将该指针赋值为NULL,防止多次delete该指针。 阅读全文
posted @ 2013-10-04 12:03 igody 阅读(1795) 评论(0) 推荐(2) 编辑
摘要: 问鼎视频编码业明日霸主(上篇)——点评H.264/AVC、HEVC及VP8 【导读】 巴塞罗那MWC 2012,“新、奇、怪”依旧属于这个业已沸腾的行业。各家厂商为博业界惊鸿一瞥,打了鸡血一般使尽浑身解数。一时之间,新产品横扫各大媒体,颇有几分“花乱渐欲迷人眼”的架势。在搭台唱大戏的背景下,高通(Qualcomm)展示了Snapdragon S4双核处理器,并在基于该处理器的一款Android Tablet上播放了一段使用下一代视频编码方案压缩的短片。 该短片标志着HEVC编码方案的首次亮相,而在展会现场与之对比的,即是当前广为业界使用的H.264/AVC编码方案。不怕不识货,就怕货比货,.. 阅读全文
posted @ 2012-12-23 12:27 igody 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 概念全排列的生成算法有很多种,有递归遍例,也有循环移位法等等。但C++/STL中定义的next_permutation和prev_permutation函数则是非常灵活且高效的一种方法,它被广泛的应用于为指定序列生成不同的排列。本文将详细的介绍prev_permutation函数的内部算法。按照STL文档的描述,next_permutation函数将按字母表顺序生成给定序列的下一个较大的排列,直到整个序列为降序为止。prev_permutation函数与之相反,是生成给定序列的上一个较小的排列。二者原理相同,仅遍例顺序相反,这里仅以next_permutation为例介绍算法。先对序列大小的比 阅读全文
posted @ 2012-10-16 21:23 igody 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 32位环境涉及"ILP32"数据模型,是因为C数据类型为32位的int、long、指针。而64位环境使用不同的数据模型,此时的long和指针已为64位,故称作"LP64"数据模型。现今所有64位的类Unix平台均使用LP64数据模型,而64位Windows使用LLP64数据模型,除了指针是64位,其他基本类型都没有变。TYPE LP32 ILP32 LP64 ILP64 LLP64CHAR 8 8 88 8SHORT 16 1616 16 16INT163232 64 32LONG 3232 6464 32LONG LONG 6464646464POIN 阅读全文
posted @ 2012-10-07 21:26 igody 阅读(4474) 评论(0) 推荐(1) 编辑
摘要: hash_map的声明如下:template < class Key, class Type, class Traits=hash_compare<Key, less<Key> >, class Allocator=allocator<pair <const Key, Type> > >class hash_map第四个参数表示map中元素存储的方式,一般情况下,我们都使用pair类型,所以第四个参数使用默认的就可以了。第三个参数是一个仿函数类,提供两个函数,第一个计算hash,第二个比较key的大小,故要求key支持operator 阅读全文
posted @ 2012-09-19 15:57 igody 阅读(679) 评论(0) 推荐(0) 编辑
摘要: 今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。 所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。 解法1: 我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,总的时间复杂度为O(n*logn + k)。 解法2: 利用选择排序或交互排序,K次选择后即可得到第k大的数。总的时间复杂度为O(n*k) 解法3: 利用快速排序的思想,从数组.. 阅读全文
posted @ 2012-09-04 19:46 igody 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 我们知道,LINUX为了解决SELECT或者POLL函数调用效率不够高的问题,退出了一个内核调用函数EPOLL,而WINDOWS下的完成端口更进一步,EPOLL只是在有变化的时候通知投递者,而完成端口干脆连部分变化也一起给处理了。 SELECT效率为什么不如EPOLL,这就需要操作系统知识了,因为操作系统对句柄的管理是全局的,而很多操作是通过驱动来完成的,SELECT的原理是,对SELECT指定的SOCKET队列进行循环扫描,直大发生指定变化或者超时,注意是循环,特例就是指定超时时间为0,这个时候,SELECT的效率同样是很高的,而当变化发生时,由于调度的关系,这个时候SELECT可能并没有被 阅读全文
posted @ 2012-09-02 14:09 igody 阅读(2141) 评论(0) 推荐(0) 编辑
摘要: 将构造函数,析构函数声明为私有和保护的,那么对象如何创建?已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙说明,关于构造,析构函数声明为私有和保护时的用法???提出这个问题,说明你已经对c++有所思考了。从语法上来讲,一个函数被声明为protected或者private,那么这个函数就不能从“外部”直接被调用了。对于protected的函数,子类的“内部”的其他函数可以调用之。而对于private的函数,只能被本类“内部”的其他函数说调用。语法上就是这么规定的,你肯定也知道的咯。那么为什么有时候将构造函数或者析构函数声明为protected的或者private的?通 阅读全文
posted @ 2012-09-01 11:14 igody 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列, 而不是简单地顺序排列,这就是内存对齐。 内存对齐的原因: 1)某些平台只能在特定的地址处访问特定类型的数据; 2)提高存取数据的速度。比如有的平台每次都是从偶地址处读取数据,对于一个int型的变量,若从偶地址单元处存放,则只需一个读取周期即可读取该变量;但是若从奇地址单元处存放,则需要2个读取周期读取该.. 阅读全文
posted @ 2012-08-22 14:04 igody 阅读(215) 评论(0) 推荐(0) 编辑