1. 赋值运算符函数(或应说复制拷贝函数问题)
class A { private: int value; public: A(int n) : value(n) {} A(A O) { value = O.value; } // Compile Error : (const A& O) };
因为,A a(0); A b = a; 就会使程序陷入死循环。
2. 实现 Singleton 模式 (C#)
(博客待加设计模式总结)
3.二维数组中的查找
Sample:
二维数组:Matrix[4][4],行列都是递增。
1 2 8 9
2 4 9 12
4 7 10 13
6 8 11 15
判断 value = 7 是否在数组。
思路:从右上角开始,若大于 7 删去一列; 若小于 7 删去一行。
代码:
#include<iostream> const int N = 4; int data[][N] = {{1, 2, 8, 9},{ 2, 4, 9, 12},{4, 7, 10, 13}, {6, 8, 11, 15}}; bool find(int (*matrix)[N], int row, int column, int value) { int r = 0, c = column - 1; while(r < row && c >= 0) { if(matrix[r][c] == value) return true; if(matrix[r][c] > value) --c; else ++r; } return false; } int main() { std::cout << find(data, 4, 4, 10) << std::endl; return 0; }
4.替换空格 时间:O(n) 空间:O(1)
Sample:
输入: S:"We are happy."
输出:S:"We%20are%20happy."
1 #include<stdio.h> 2 #include<string.h> 3 const int N = 18; 4 /* length is the full capacity of the string, max number of elements is length-1*/ 5 void ReplaceBank(char s[], int length){ 6 if(s == NULL && length <= 0) return; // program robustness 7 int nowLength = -1, numberOfBlank = 0; 8 while(s[++nowLength] != '