摘要:
In C++, a derived class object can be assigned to base class, but the other way is not possible.class Base { int x,y;};class Derived : public Base { int z, w;};int main() { Derived d; Base b = d;}Object slicing happens when a derived class object assigned to base class, additional attributes of deri 阅读全文
摘要:
1. 初始化gdb 是对已经编译成功程序到调试, 并且为了保证可执行程序时包含调试信息, 编译时使用 -g 参数来指明sublimetext ctrl+B 生成到可执行文件不能直接被 gdb 调试2. 暂停程序gdb 可以实用几种方式来暂停程序: 断点, 观察店, 捕捉点, 信号, 线。 当程序被暂停后, 可以使用 continue, next, step 来继续执行程序continue 执行到下一个暂停点或程序结束next 执行下一行代码但进入函数内部step 执行下一行代码并且进入函数内部(1)设置断点 a. break +[源代码行号] b. break ... if ... con.. 阅读全文
摘要:
1. 不能通过类名来调用类的非静态成员函数2. 类的对象可以使用静态成员函数和非静态成员函数3. 静态成员函数中不能引用非静态成员 因为静态成员函数属于整个类, 在类的实例化对象之前就已经分配了空间, 而类的非静态成员必须在类实例化对象后才有内存空间 4. 类的非静态成员函数可以调用静态成员函数, 但反之不行5. 类的静态成员函数必须先初始化再使用6. 重要特点 隐藏: 当我们同时编译多个文件时, 所有未加 static 前缀的全局变量和函数都具有全局可见性7. static 的第二个作用是保持变量的持久化 存储在静态数据区的变量会在程序刚开始运行时就完成初始化, 也是唯一一次初始化.... 阅读全文
摘要:
相同点:都可以动态的申请并释放内存不同点:1. 用法不同 malloc 函数为 void* malloc(size_t size), 用于申请一块长度为 size 字节的内存空间. 假如我们希望申请一个长度为 100 的 int 型数组所需的内存空间的话, 我们需要写成这样, malloc(100*sizeof(int)). 同时注意到 malloc 返回的是 void* 的指针, 这就要求我们进行类型转换, int * ptr = (int*) malloc(100*sizeof(int)) free 函数为 void free(void*) 指针包含其指向的地址以及指向的类型以及长... 阅读全文
摘要:
题目设定是这样的,一个岛上有100个人,其中有5个红眼睛,95个蓝眼睛。这个岛有三个奇怪的宗教规则。1. 他们不能照镜子,不能看自己眼睛的颜色。2. 他们不能告诉别人对方的眼睛是什么颜色。3. 一旦有人知道了自己是红眼睛,他就必须在当天夜里自杀。某天,有个旅行者到了这个岛上。由于不知道这里的规矩,所以他在和全岛人一起狂欢的时候,不留神就说了一句话:【你们这里有红眼睛的人。】最后的问题是:假设这个岛上的人足够聪明,每个人都可以做出缜密的逻辑推理。请问这个岛上将会发生什么?举例子1. 假设岛上只有一个红眼睛, 那么这个红眼睛当晚就会自杀2. 假设岛上有两个红眼睛, 俩人都看到对方是红眼睛, 但第一 阅读全文
摘要:
下午两点四十七接到一个电话, 0571开头的, 杭州的, 不会有错了过程:第一个问题, C,C++, malloc, free 和 new, delete 的异同点. 不知道, 我自己没用过malloc 和 free, 完全不知道从何答起, 只好说 new 是申请一块空的内存, 返回指向空内存的指针. delete 用来回收被分配的内存, 这个题目挂了第二个问题, static 是怎么实现的, 特点, 与全局变量的区别, 一个文件能不能访问另一个文件的 static 变量, 能的话为什么, 不能的话又为什么. 我只知道 static 是和类或方法绑定的, 其余一概不知第三个问题, C++ 多态 阅读全文
摘要:
1. 思路比较简单, 每次从数组中抽出两个数, 若是不同则丢弃两个数, 最后剩下的数即为所求2. 书中给出的代码实现比较巧妙. 遍历数组中的元素, 变量 result 记录当前元素, time 记录出现的次数, 当元素的出现次数为 0 时, 更新 result, 遍历一遍数组, 返回 result, 这段代码给我的感觉是, 金子总会发光.. 阅读全文
摘要:
1. 使用最小堆, 设置最小堆的大小为K, 仅需遍历一遍即可2. 寻找最大的 K 个数实质上是寻找第 K 大的数. 通过二分法在区间内不断校正 mid 的值来找到 pivot, 时间复杂度为 o(N*logN), 最后以 o(N) 的复杂度滤出 K-1 个数3. 哈希算法, 假定数都是整数. 将所有的数看成二进制的, 若某一个数最高位为第 i 位, 则将该数放到第 i 个桶中, 统计各个桶中的个数, 递归求解, 逐步缩小 K 所在的桶的范围 阅读全文
摘要:
假设浮点数为 X 的表示形式为X = 0.a1a2...an (b1b2...bm)那么 10^N * X = a1a2...an.(b1b2...bm)同时, 令 Y = 0.(b1b2...bm)那么 Y*10^M = b1b2...bm(b1b2...bm)得到等式 Y*10^M - b1b2...bm = Y, 可以解出 Y将 Y 带入 10^N*X 可解出 X 阅读全文
摘要:
1. O(N*logN) 解法先对序列排序, 然后寻找两个序列的最长公共子序列2. O(N*N) 的动态规划解法令 LIST[i] 表示以 i 为结尾的最长子序列的长度, 那么 LIST[J] = MAX(LIST[I]+1), J > I3. O(N*logN) 的动态规划解法 (需要 O(N) 的空间复杂度)设置一个数组 B[], 记录 B[] 记录长度为 i 的 LIS 的末尾元素, 向 B 中插入数据使用二分插入, 即可实现 N*logN 的时间复杂度方法很是奇妙 阅读全文