##strcpy & memcpy
这两个库函数的实现应该算是比较简单的,但是竟然看到了很多不正确的版本,其实只要注意以下几点就OK了
- 参数判断
- 返回指针临时保存
- 地址重叠判断
- '\0'复制
char* MemCpy(char* dst, const char* src, int len){##strcpy & memcpy
这两个库函数的实现应该算是比较简单的,但是竟然看到了很多不正确的版本,其实只要注意以下几点就OK了
char* MemCpy(char* dst, const char* src, int len){##赋值运算操作符
为如下类型添加赋值运算。
class MyString
{
public:
MyString(char* pData = NULL);
MyString(const MyString str);
~MyString();##++前置和++后置
在对操作符++进行重载的时候有两个
//前置
Object operator ++();
//后置
Object operator ++(int);其实,前置和后置是有着效率上的差别的,STL中类类型迭代中有很多的前置操作
##KMP match
KMP算法的关键在于求算next[]数组的值,即求算模式串每个位置处的最长后缀与前缀相同的长度, 而求算next[]数组的值有两种思路,第一种思路是用递推的思想去求算,还有一种就是直接去求解(略)。
递推:
##继续来写一个自认为比较完美的atoi版本
直接上代码,关键点在处理溢出的地方!另外优化了判断的逻辑
int StrToInt(const char* str)
{
int n = 0;
int sign = 1;
int c;