const 相关
正常的指针是很好记的:
const
在*
前边,表示*p
不能变;cosnt
在*
后边,表示p
不能变;- 前后都有
const
表示*p
和p
都不能变。
但是 STL vector 的 iterator
和 const_iterator
是不一样的:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v{0};
const vector<int>::iterator ite1 = v.begin();
*ite1 = 10;
// ++ite1; // Error
vector<int>::iterator const ite2 = v.begin(); // 和上边一样
*ite2 = 10;
// ++ite2; // Error
vector<int>::const_iterator ite3 = v.begin();
// *ite3 = 10; // Error
++ite3;
const int *p1 = new int(5);
// *p1 = 10; // Error
++p1;
int * const p2 = new int(5); // 和上边不一样!!
*p2 = 10;
// ++p2; // Error
const int * const p3 = new int(5);
// *p3 = 10; // Error
// ++p3; // Error
}
可以参考const auto的使用,也是同样的:https://blog.csdn.net/Bob__yuan/article/details/99673410。
指针与迭代器的区别