代码改变世界

随笔档案-2011年07月

不借助临时变量交换两个变量的值

2011-07-24 10:49 by menggucaoyuan, 445 阅读, 收藏,
摘要: 如果要交换两个变量的值,一段典型的代码如下: void swap(type* a, type* b) { if (!a && !b) { type temp = *a; *a = *b; *b = temp; } } 如果要求不借助于临时变量,则可能有如下代码: void swap(type* a, type* b) { if (!a && !b) { *a = *a + *b; *b = *a - *b; *a = *a - *b; } } 上面这段代码是比较危险的,有数值溢出的危险。 如果... 阅读全文

某公司的几道面试题

2011-07-13 09:14 by menggucaoyuan, 775 阅读, 收藏,
摘要: 在sz的tx面试时,有以下几道好题,面试时没有思路,面试人给提示下,觉得算法很好。不敢独享,特列出。朋友中又觉得我把题列出来是不妥当行为的,请及时告知,我会马上删除。题1:找出集合{A, B, C, ..., Z}的所有子集。分析:如果集合为{A,B,C},则所有的子集如下: A B C 0 0 0 值为0 代表空集 0 0 1 值为1 代表{C} 0 1 0 值为2 代表{B} 0 1 1 值为3 代表{B,C} 1 0 0 值为4 代表{A} 1 0 1 值为5 代表{A,C} 1 1 0 值为6 代表{A,B} 1 1 1 值为7 代表{A,B,C} 能看出点什么规律吧?集合的总数为2. 阅读全文

在C++中用C#风格设置类的属性值

2011-07-04 22:31 by menggucaoyuan, 822 阅读, 收藏,
摘要: 在C#中,程序员可以写出如下风格的代码设置属性值:private int _x;public int x{ get { return _x; } set { _x = value; }}然后可以对_x值进行赋值或者取值:someObject.x = 50; 如果C++也能写出如此风格的代码,则其应有如下形式:private: int x;public: int getX() { return x; } void setX(int value) { x = value; }调用这些函数时,有如下调用法:someObject.setX(50); int x = someObject.getX(); 阅读全文