iterator的顶层const与底层const

来源:互联网 发布:php 获取数组某个元素 编辑:程序博客网 时间:2024/05/22 06:12

STL迭代器是以指针为根据塑模出来的,所以迭代器的作用就像是一个T* 指针。声明迭代器为const 就像是声明指针为顶层const 一样(即声明一个T* const 指针),表示这个迭代器不能指向别的东西,但是它所指的东西是可以改动的。

也就是说,const iterator 这表示迭代器本身是一个const。

如果你希望迭代器所指向的东西不可被改动,即希望STL模拟一个 const T* 指针,则你需要的是 const_iterator ,这是一个底层const 的迭代器:

std::vector<int> vec;vec.push_back(1);vec.push_back(2);const std::vector<int>::iterator top_level_const_iter = vec.begin();*top_level_const_iter = 10;//OK++top_level_const_iter;//error: const iteratorstd::vector<int>::const_iterator low_level_const_iter = vec.begin();*low_level_const_iter = 10;//error: assignment of read-only++low_level_const_iter;//OK



0 0
原创粉丝点击