
C++
文章平均质量分 54
orzlzro
这个作者很懒,什么都没留下…
展开
-
C语言可变参数实现函数重载
<br />ANSI C 标准中,有可变参数的概念,可以通过一组宏实现<br /> <br /> va_list arg_ptr: 定义一个可变参数列表指针<br /> va_start(arg_ptr, argN): 让arg_ptr指向参数argN<br /> va_arg(arg_ptr, type): 返回类型为type的参数指针,并指向下一个参数<br /> va_copy(dest, src):原创 2011-06-01 16:04:00 · 2674 阅读 · 1 评论 -
openduckbill 异常
今天使用了openduckbill由于openduckbill最近没有更新,而pyinotify更新了,所以导致openduckbill出现异常 AttributeError: type object 'EventsCodes' has no attribute 'IN_CLOSE_WRITE'解决办法,打入以下patchdiff -ruN openduckbi原创 2012-01-05 21:29:02 · 1587 阅读 · 0 评论 -
GCC 编译出错 /usr/bin/ld: cannot find -lc
先用locate 找到 libc.so的位置。然后把libc.so拷贝到/usr/local/lib目录中原创 2012-01-02 14:00:06 · 7550 阅读 · 3 评论 -
Boost编译
bjam.exe stage --build-type=minimal --with-date_time --with-filesystem --with-program_options --with-regex --with-serialization --with-system --with-thread toolset=msvc-10.0 debug release link=static原创 2011-12-30 11:27:02 · 1012 阅读 · 0 评论 -
C++ 中的单例模式 普通,2B, 文艺
一、普通Singleton#includeusing namespace std;class Singleton{ public: static Singleton* getInstance(); private: static Singleton* instance; Singleton()原创 2012-01-09 13:07:50 · 1344 阅读 · 1 评论 -
STL map与Boost unordered_map
今天看到 boost::unordered_map, 它与 stl::map的区别就是,stl::map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树中。所以,如果对map进行遍历(中序遍历)的话,输出的结果是有序的。顺序就是按照operator< 定义的大小排序。而boost::unordered_map是计算元素的Hash值,根据Hash值原创 2011-12-24 11:05:59 · 44903 阅读 · 6 评论 -
Boost::lexical_cast
Boost 提供了lexical_cast, 可以方便地在string和int, double, float, long之间相互转化。再也不用sprintf或者atoi了用法string s = lexical_cast(123.12);看Boost的实现,其实是用了stringstream。 如果写的简单点,什么异常都不考虑,可以实现如下template Target le原创 2011-12-23 22:40:59 · 1094 阅读 · 1 评论 -
STL iterator traitor
迭代器的型别(associated types)是泛型编程中经常用到的一种技术。由于C++是一种弱类型语言,不支持typeof()。 虽然可以用RTTI中的typeid(), 获得的也只是型别的名称,不能用于声明变量。解决方法可以用模板函数的参数推倒(argument deducation)#includeusing namespace std;templatevoid fun原创 2011-12-12 21:27:01 · 1026 阅读 · 1 评论 -
STL auto_ptr
先贴下auto_ptr的SGI实现/* * Copyright (c) 1997-1999 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any pu原创 2011-12-08 21:13:35 · 755 阅读 · 0 评论 -
C++中多维数组做参数
C++中多维数组做参数,第二维或者更高维的维数不能省略。例如,可以void Func(int array[3][10]);void Func(int array[][10]);但是不可以void Func(int array[][]);这是因为,在内存中,多维数组的存放(一般是按行存放)并不区分行和列,因此,如果不知道第二维或者更高维编译器就不知道有多少行多少列,就没法寻址。原创 2011-11-09 14:53:28 · 908 阅读 · 0 评论 -
创建和使用静态库
摘自 http://msdn.microsoft.com/zh-cn/library/ms235627.aspx一、创建静态库1、创建一个项目,项目类型选择“静态库”2、选择预编译头文件3、示例代码// MathFuncsLib.hnamespace MathFuncs{ class MyMathFuncs { public:原创 2011-11-30 14:14:33 · 1487 阅读 · 0 评论 -
log4cplus 链接不成功
今天想用log4cplus ,但是建了一个项目测试,一直提示链接不成功,原来是字符集的问题。在项目属性-> General->Character Set 选择 Use Multi-Byte Character Set原创 2011-11-30 19:03:36 · 1612 阅读 · 1 评论 -
创建和使用动态连接库
摘自http://msdn.microsoft.com/zh-cn/library/ms235636.aspx一、创建动态连接库1. 创建一个dll项目2. 添加一个名为“MyMathFuncs”的简单类,以执行常见的算术运算,如加、减、乘和除。 代码应与以下内容类似: 示例代码// MathFuncsDll.hnamespace MathFuncs{原创 2011-11-30 18:49:34 · 1290 阅读 · 1 评论 -
深入理解C语言
#include void foo(void){ int a; printf("%d\n", a);}void bar(void){ int a = 42;}int main(void){ bar(); foo();}你知道这段代码会输出什么吗?A) 一个随机值,B) 42。A 和 B都对.如果你使用一般的编译,会输转载 2011-11-22 11:23:27 · 1005 阅读 · 0 评论 -
struct位域,对齐以及union作为class需要注意的地方
<br /><br />一. struct对齐<br />在c/c++中,struct结构体的大小不是简单的成员变量所占空间大小的累加,这里面涉及到变量对齐(alignment)的概念,由于计算机中内存的结构,使得cpu从某个特定边界的地址可以一次读取出某几个字节的数据,但是不处于边界的地址上读数据效率就会很低了。比如cpu可以一次性从4倍地址处读取4字节的数据,但是我现在需要读取地址为5开始的4字节的内容,那么cpu就只能分2次内存周期来取数据了。<br />由于这个原因,不管是汇编编译器还是高级语言的编转载 2011-05-07 00:04:00 · 3043 阅读 · 0 评论 -
c语言运算符的优先级
<br />http://www.slyar.com/blog/c-operator-priority.html原创 2011-05-07 10:14:00 · 515 阅读 · 0 评论 -
用C++设计一个不能被继承的类
题目:用C++ 设计一个不能被继承的类。分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。在Java 中定义了关键字final ,被final 修饰的类不能被继承。但在C++ 中没有final 这个关键字,要实现这个要求还是需要花费一些精力。首先想到的是在C++ 中,子类的构造函数会自动调用父类转载 2011-06-17 23:34:00 · 642 阅读 · 0 评论 -
二叉树的非递归前序、中序以及后序遍历C++模版类实现
#include using namespace std;/////////////////////////////////////////////////////////////////////////stack template class Stack{public: Stack(int size = 50); ~Stack(); void push(T* data);转载 2012-06-11 09:28:54 · 976 阅读 · 0 评论