本文共 4113 字,大约阅读时间需要 13 分钟。
#define WM_USERID 0x0001int main(void) { int code = WM_USERID; switch(code) { case WM_USERID: break; case ... break; } return 0;}// 手敲 未测试正确性
_SingleList::Iterator& _SingleList::Iterator::operator++()//前加{ pNote = pNote->pNext; return *this;}_SingleList::Iterator _SingleList::Iterator::operator++(int)//后加{ Iterator tmp(*this); pNote = pNote->pNext; return tmp;}注:使用前,请务必充分理解 ++前 后++ 的意义
void func(std::string& _src) { _src = "CSDN"; return;}int main(void) { std::string src("Ayo"); func(src); std::cout << src.c_str() << std::endl; return 1;}
void const_func(const char * _src) { return;}int main(void) { std::string src("Ayo"); const_func(src.c_str()); std::cout << src.c_str() << std::endl; return 1;}
void func(char * _src) { return;}int main(void) { std::string src("Ayo"); func(src.c_str()); // error std::cout << src.c_str() << std::endl; return 1;}
------------------ADD BEGIN----------------
2016/11/24 关于const的细节说明
为什么要使用const?
我们尽最大可能的使用 const 是为了告诉程序这个值是不能被改变的,在后期的调试过程中,我们也可以从参数类型中确认当前参数没有可能被改动。对于调试带来了很大的遍历。
上面有提到形参尽可能使用引用,想必各位都知道改引用就是在改被引用的值,我们为形参添上限定符const以后,就可以确保当前参数的安全性,也能告诉外部调用者,当前函数并没有对参数进行更改,只是单纯了使用了一种优化技术。
我们来看下上面的反例,这个反例很显然的说明了一个问题,利用const限定符,可以更有效的接收更多类型的参数。这样也有助于我们调用者的使用。
-------------------ADD END------------------
用的时候再声明,减少不必要的开销。
void function(int _doWhat) { std::cout << _doWhat << std::endl; return;}int main(void) { std::string str("123"); // 一个很少会触发的if语句 if (i < 0) { std::stringstream io; int num; io << str; io >> num; function(num); // str do something.. } return 0;}
反例
void function(int _doWhat) { std::cout << _doWhat << std::endl; return;}int main(void) { std::string str("123"); std::stringstream io; int num; // 一个很少会触发的if语句 if (i < 0) { io << str; io >> num; function(num); // str do something.. } return 0;}
尽可能使用构造初始化,避免使用赋值初始化
std::string str("123"); // good code std::string str = "123";
------------------ADD BEGIN----------------
2016/11/20相关文章:
-------------------ADD END------------------
断点调试过的朋友都应该知道,if 是每一个分支语句都去做一次判断的。这也影响了代码的运行效率
如果条件允许的话,使用switch代替if语句。
// 正例ClassPerson str;for (int i = 12; i < 32; ++i) { str.idcard = i; // do something}// 反例for (int i = 12; i < 32; ++i) { ClassPerson str; str.idcard = i; // do something}
------------------ADD BEGIN----------------
2016/11/24相关优化
struct { bool flag; bool state; char name; int age; double sss;}应从最小的类型开始声明,在某一些编译器里,可以有效的减少内存的占用。
因为有些编译器使用的是4字节对齐,以便分界。细节可以自行查询。
-------------------ADD END------------------
在学术界有很多公认非常优良的算法,可以根据自己情况选择使用。
例如:
查找:二分查找、分块查找、哈希查找
排序:快速排序、堆排序、归并排序
数据存储:Sqlite3、Mysql等
图像处理:opencv、matlab
代码的优化,一定要考虑到可理解性!!! 不要自己天花乱坠,画蛇添足。
个人认为:
要从最常用的代码块开始优化,因为要把好路建在最有用的地方,不要在深山里建造昂贵的高架。
先保证逻辑简单清晰,再来考虑算法优化,和上文写的最佳使用。
转载地址:http://foqrb.baihongyu.com/