
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 · 2694 阅读 · 1 评论 -
openduckbill 异常
今天使用了openduckbill 由于openduckbill最近没有更新,而pyinotify更新了,所以导致openduckbill出现异常 AttributeError: type object 'EventsCodes' has no attribute 'IN_CLOSE_WRITE' 解决办法,打入以下patch diff -ruN openduckbi原创 2012-01-05 21:29:02 · 1605 阅读 · 0 评论 -
GCC 编译出错 /usr/bin/ld: cannot find -lc
先用locate 找到 libc.so的位置。然后把libc.so拷贝到/usr/local/lib目录中原创 2012-01-02 14:00:06 · 7590 阅读 · 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 · 1028 阅读 · 0 评论 -
C++ 中的单例模式 普通,2B, 文艺
一、 普通Singleton #include using namespace std; class Singleton { public: static Singleton* getInstance(); private: static Singleton* instance; Singleton()原创 2012-01-09 13:07:50 · 1363 阅读 · 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 · 44937 阅读 · 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 · 1108 阅读 · 1 评论 -
STL iterator traitor
迭代器的型别(associated types)是泛型编程中经常用到的一种技术。由于C++是一种弱类型语言,不支持typeof()。 虽然可以用RTTI中的typeid(), 获得的也只是型别的名称,不能用于声明变量。 解决方法可以用模板函数的参数推倒(argument deducation) #include using namespace std; template void fun原创 2011-12-12 21:27:01 · 1037 阅读 · 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 · 773 阅读 · 0 评论 -
C++中多维数组做参数
C++中多维数组做参数,第二维或者更高维的维数不能省略。例如,可以 void Func(int array[3][10]); void Func(int array[][10]); 但是不可以void Func(int array[][]); 这是因为,在内存中,多维数组的存放(一般是按行存放)并不区分行和列,因此,如果不知道第二维或者更高维编译器就不知道有多少行多少列,就没法寻址。原创 2011-11-09 14:53:28 · 927 阅读 · 0 评论 -
创建和使用静态库
摘自 http://msdn.microsoft.com/zh-cn/library/ms235627.aspx 一、创建静态库 1、创建一个项目,项目类型选择“静态库” 2、选择预编译头文件 3、示例代码 // MathFuncsLib.h namespace MathFuncs { class MyMathFuncs { public:原创 2011-11-30 14:14:33 · 1507 阅读 · 0 评论 -
log4cplus 链接不成功
今天想用log4cplus ,但是建了一个项目测试,一直提示链接不成功,原来是字符集的问题。 在项目属性-> General->Character Set 选择 Use Multi-Byte Character Set原创 2011-11-30 19:03:36 · 1631 阅读 · 1 评论 -
创建和使用动态连接库
摘自http://msdn.microsoft.com/zh-cn/library/ms235636.aspx 一、创建动态连接库 1. 创建一个dll项目 2. 添加一个名为“MyMathFuncs”的简单类,以执行常见的算术运算,如加、减、乘和除。 代码应与以下内容类似: 示例代码 // MathFuncsDll.h namespace MathFuncs {原创 2011-11-30 18:49:34 · 1304 阅读 · 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 · 1016 阅读 · 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 · 3068 阅读 · 0 评论 -
c语言运算符的优先级
<br />http://www.slyar.com/blog/c-operator-priority.html原创 2011-05-07 10:14:00 · 525 阅读 · 0 评论 -
用C++设计一个不能被继承的类
题目:用C++ 设计一个不能被继承的类。分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。在Java 中定义了关键字final ,被final 修饰的类不能被继承。但在C++ 中没有final 这个关键字,要实现这个要求还是需要花费一些精力。首先想到的是在C++ 中,子类的构造函数会自动调用父类转载 2011-06-17 23:34:00 · 653 阅读 · 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 · 989 阅读 · 0 评论