总结STL的通用算法基本形式 stl的通用算法基本有如下四种形式:alg(beg, end, params):使用源输入作为输出alg(beg, end, dest, params) :使用dest作为输出,需要保证有足够的空间,所以往往使用inserteralg(beg, end, beg2, other params):beg2作为输出,假定beg2开始的范围至少跟beg和end指定的范围一样大。alg(beg, end, beg2, end2, params):beg2 end2作为输出举例:第一种比如:fin
同步github上的项目到gitcafe github固然好,只是国内访问有点慢。为了提高博客访问速度我决定把github上托管的博客同步到gitcafe上。最好能在DNS那里做CDN,但是貌似没有免费的服务。那直接指向gitcafe好了,反正没有什么国外访问的需求。简单记一下过程。gitcafe自己有导入的功能,但是貌似不是很好用。而且不够智能。所以我们先建立一个跟用户名一样的目录。gitcafe只允许这种方式的Html页面生成。并且只渲染gitcafe-pages分支。
关于Const指针的一点补充 OsChina上一个朋友给出的例子,很能说明问题:typedef char * CharPtr; const CharPtr mycharptr = "Hello, World"; mycharptr[0]='h'; //OK[1] mycharptr = "It's Wrong"; //Err[2] 如果把CharPtr替代掉的话,那么似乎[
区分一下强制类型转换运算符重载/赋值运算符重载/对象定义的赋值 这三个名字可能很绕,看着也很不一样,但其实是三个很容易混淆的概念,并且经常在实际编程中遇到。这里拿出来比较一下。 首先是强制类型转换运算符的重载,作用是当前对象向其他类型的转换,常见的形式是operator int();Integer::operator int(){ return x;} 调用方式类似于Integer c(10)
深入解析C++输入输出运算符重载 其实算不上什么深入解析,只不过最近看CArchive类的实现,其中一些写法完全颠覆了我对输入输出运算符重载的一些理解,所以在这里mark一下。 我们以输出运算符为例。首先输出运算符重载的一般形式是friend ostream& operator(ostream& o,const ClassName& c);[1] ostream是c++流输出的
简短总结一下C#里跨线程更新UI 跨线程更新UI是写多线程程序尤其是通信类的程序经常遇到的问题,这里面主要的问题是冲突,比如数据线程想要更新UI的时候,用户同时也在更新UI,就会出现争用。C#里可以用Control.CheckForIllegalCrossThreadCalls = false; 来关闭跨线程检测。但是这样做有一定的风险,容易让程序崩溃。 最好的办法是通过Invoke,这篇博
记ThinkPad某些型号下Linux报Unable to enumerate USB device错误的问题 这问题确实挺烦的,据说常见于某些ThinkPad系的笔记本,具体表现是不停的报Unable to enumerate USB device….. 的错误,而在某些Linux版本(比如pinguy os)下会不停提示Device Recognized和Device Removed,有人提供了如[1]的解决方案,但是好像在pinguy os 下并无效果,而且这实际上
关于类成员变量初始化顺序 java和C#语言里类变量初始化的顺序是1 类成员变量初始化先于类的构造函数2 静态成员变量先于实例变量3 父类成员变量先于子类成员变量 C#相反4 父类构造函数先于子类构造函数 举一个java的例子:class Base{ public static Test a=new Test("a"); pu
C++变量的初始化方式 写这个问题是受微软今年实习生招聘的一道笔试题启发,上一篇博客好像提到了。之前还真没细想过这些事情。 首先把需要初始化的成员变量分为几类:一般变量(int)静态成员变量(static int)常量(const int )静态常量(static const int) 对应的初始化方式是:一般变量可以在初始化列表
关于const和指针的专题 const和指针的问题是笔试里经常出现的问题。这里综合一下各种不同的情况。 首先是几种const与指针组合的区分,比如:int b = 500; const int* a = &b; [1] int const *a = &b; [2] int* const a = &b; [3] const int* const a = &b; [4]
Apache地址重写的几个问题 Apache地址重写的配置分为两种方式,即通过httpd.conf配置和.htaccess文件。 首先要打开rewrite模块,windows下的配置是LoadModule rewrite_module modules/mod_rewrite.so httpd.conf的配置可以全局生效,也可以只配置一个目录,需要做的事情是在相应目录的D
解决Latex中Itemize距离过大的问题 默认的itemize存在行距过大的问题,大概是如下的样子: 用paralist包可以减少行距,代码如下\usepackage{paralist} \let\itemize\compactitem \let\enditemize\endcompactitem \let\enumerate\compactenum \let\endenumer
发布VIM缓冲区切换插件buf_it升级版 VIM默认使用的过程中有一个重要的问题,就是打开多个文件的时候无法可视化看到打开的文件,并在这些文件中切换。MiniBufExplorer是一个常用的buffer切换插件,但是这个插件在Windows下使用的时候有许多问题,同时也太繁琐。buf_it[1]则实现了轻量的buffer管理,但是buf_it同样在windows下有许多问题,而buf_it的退出机制也会出现只想关闭一个文件确关闭了整个v
Doxygen几个小问题,mark一下 首先是在Visual Assist X中的配置,在Snippet Editor窗口修改一下file header的snippet和Refactor Document Method的snippet. 设置分别如下file header/** * @file $FILE_BASE$.$FILE_EXT$ * @Synopsis
圆周率节快乐 圆周率节快乐! 圆周率3000位3.1415926535 8979323846 2643383279 5028841971 6939937510 5820974944 5923078164 0628620899 8628034825 3421170679 8214808651 3282306647 0938446095 5058223172 5359408128 4811174502
十六进制编辑器 调试一个文件输出函数的时候发现是乱码,立马想到查看二进制,发觉十六进制编辑器是太有用的一个东西了并且写c++的人一个明显的习惯是用指针管理一块空间,这样编译器会把空间申请在堆上,效率更高,并且可以申请更大的内存.但是除了需要防止溢出和释放内存外,调试的时候也无法像数组那样在VS里很明显的看到内容,这样我们可以用如下代码把它打印到文件,然后在文件中用WinHex查看,很方便CFile c