![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术漫游
对象
NULL
展开
-
构建二叉堆时间复杂度的证明。
如果仅从代码上直观观察,会得出构造二叉堆的时间复杂度为O(n㏒n)的结果,这个结果是错的,虽然该算法外层套一个n次循环,而内层套一个分治策略下的㏒n复杂度的循环,该思考方法犯了一个原则性错误,那就是构建二叉堆是自下而上的构建,每一层的最大纵深总是小于等于树的深度的,因此,该问题是叠加问题,而非递归问题。那么换个方式,假如我们自上而下建立二叉堆,那么插入每个节点都和树的深度有关,并且都是不断的把树折原创 2012-01-03 07:50:20 · 12258 阅读 · 3 评论 -
刨根问底:C++中未初始化全局变量为什么都会被编译器自动置0
有这个疑问很久了今天搜了一上午资料想知道为什么。原创 2014-05-24 17:02:15 · 4559 阅读 · 1 评论 -
小细节:关于C++各种变量的size问题。
C++中整形数据类型的范围都定义zail原创 2014-06-05 20:50:38 · 1275 阅读 · 0 评论 -
刨根问底:C++中宽字符类型(wchar_t)的编码一定是Unicode?长度一定是16位?
问题的起因是和一个朋友讨论不同编码的转换问题,说到了wchar_t的类型,朋友的看法是,wchar_t的编码方式是utf-16,长度一定是16位的。我的看法不同,我认为wchar_t的长度和编码方式都是编译器和平台决定的,和语言没任何关系。后来这个朋友为了说服我,回家把c++ primer给我搬出来了,还给我截了个图(因为我没这本书),在这本书第30页有个表格,清楚地写着wchar_t是u原创 2014-05-23 22:57:37 · 2681 阅读 · 0 评论 -
刨根问底:C++中浮点型变量(float, double)的比较问题。
首先,让我们先来看一段代码:#include #include int main(){ using namespace std; cout<<setprecision(17); float num1 = 1.1; double num2 = 1.1; if (num1 == num2) cout << "yes"<<endl; else cout <<原创 2014-06-05 17:42:13 · 7178 阅读 · 0 评论 -
小细节:void指针一二三
void指针,又叫通用指针或者泛指针(generic pointer)原创 2014-06-05 23:27:25 · 1110 阅读 · 0 评论 -
刨根问底:C++的移位操作
以前一直有个误区,认为负整数的右移位操作符不会改变操作数原创 2014-06-05 01:46:48 · 1079 阅读 · 0 评论 -
小细节:说说整形提升(Integral promotions)
整形提升这部分内容,其实C++11 ISO文档里介绍的已经很详细了,但还是rongy原创 2014-06-04 22:13:14 · 1107 阅读 · 0 评论 -
小细节:有关数组的指针的一道题
今天看到一道题。原创 2014-06-04 02:49:17 · 984 阅读 · 0 评论 -
关于数组局部初始化的一些延伸
今天在做Cici的一个Code review的时候,她的一个数组初始化用法让我有点疑惑,大体是这么用的:char buffer[16] = {0};她这段代码的目的倒是很好理解,就是把buffer初始化为全为0的内存空间,但是,如果让我这么做的话,我会用memset,而且很多其他程序员也会是这么做的。我自己在VS2010上试了下这种用法,确实也是全部初始化为0了。但仍然很困惑,不知原创 2013-03-14 14:53:02 · 823 阅读 · 0 评论 -
关于makefile中,一直显示“XXX is up to date”的解决方法
最近更新一个项目的makefile文件,在添加一个makefile target的时候,发现总是出现“is up to date”的提示,书写语法无任何不妥,始终找不到原因,最后google了下,找到了解决方案。在stackoverflow上,有人给出的问题原因如下:Your have directories with the same name as your targe原创 2012-09-07 14:45:36 · 69011 阅读 · 2 评论 -
error LNK1123: failure during conversion to COFF的解决方法
昨天Microsoft放出了VS2012的release版本,据说完全支持C++ 11标准,这让C++控的我大为振奋,加上公司的MSDN key可以激活正版VS2012,于是兴冲冲的下载了一个VS2012,装上后他是没问题了,但是原来的VS2010有问题了,这可气煞我也,开始没想到是VS2012引起的,以为是某个配置文件搞错了,网上搜了下。关于这个错误,微软的官方解释是这样的,COFF原创 2012-08-17 20:08:23 · 14423 阅读 · 3 评论 -
对归并、堆排、快排的一些总结。
这三个算法的理论时间复杂度都是nlogn,但是区别还是很大的。这三个算法里,实际效率最低的是堆排序,因为在每次调整大根堆的时候,都把底层元素交换到了根,然后再调整,而底层元素又不可能大于原根元素的两个孩子节点,因此非等概率调整,做了很多次无效交换,因此实际效率最低。归并排序时间效率最高,并且稳定,因为归并排序每次都把序列二等分,做等概率划分,最后继续划分,这样就能达到最优划原创 2012-03-04 16:45:30 · 2700 阅读 · 0 评论 -
关于http 表单编码的一些问题。
在网络上传输数据,压缩编码加密等操作基本是必须的,表单也是如此。最近搞桌面客户端手动组装message发送,由于桌面客户端API的网络库往往只提供简单的通讯功能,因此协议参数都得手动设定,我在模拟一个post方法的时候出现了差错,总返回错误信息,后来发现是编码设置问题。HTTP post表单编码有multipart/form-data和application/x-www-f原创 2012-02-21 14:01:07 · 837 阅读 · 0 评论 -
小细节:为什么STL中的流对象无法复制?
因为流对象中含有指向IO缓冲区的指针,假如流对象可以复制,那么将会有两个指针同时操作缓冲区,如何释放、如何修改都会有冲突同步问题,因此流对象无法复制。原创 2011-12-18 10:24:08 · 1538 阅读 · 0 评论 -
Visual Studio 2010 环境下 配置LibCurl with SSL 方法
这两天没事研究各种互联网协议,开始用原始socket自己封装通讯类,但是太麻烦,用ACE,又太重量级,最后改用cURL,比较适合大众使用。Libcurl过去只听过,没用过,只知道支持各种网络应用层通讯协议,并且用c语言实现,效率很高,使用又很方便。去了趟官网,发现很多版本的库文件,可见开发者真的花了很大功夫去维护,并且基于网络数据传输的无差别性,该函数库几乎可以在所有操作系统上使用,真原创 2012-02-15 23:41:53 · 6630 阅读 · 2 评论 -
两个小细节:短路求值和调试宏
短路求值,又叫惰性求值,原创 2014-05-30 00:07:29 · 1069 阅读 · 0 评论