对于形似函数的宏,最好改用inline函数替换#define
条款03:尽可能使用const
STL的迭代器是以指针为根据塑模出来,所以迭代器的作用就像个T*的指针。声明迭代器为const就像声明指针为const一样(即声明一个T*const指针),表示这个迭代器不得指向不同的东西,但它所指的东西的值是可以改动的。如果希望迭代器所指的东西是不可被改动的,需要的是const_iterator。
vector<int> vec; const vector<int>::iterator = vec.begin(); *iter = 10; // 没问题,改变iter所指物 ++iter; // 错误!iter是const vector<int>::const_iterator cIter = vec.begin(); *cIter = 10; // 错误!*cIter是const ++cIter; // 没问题,改变cIter
请记住