当前位置: 首页> 教育> 培训 > 【C++修炼之路 第五章】const_iterator 和 const iterator 的区别

【C++修炼之路 第五章】const_iterator 和 const iterator 的区别

时间:2025/7/11 9:35:58来源:https://blog.csdn.net/2301_79499548/article/details/140657896 浏览次数:0次

在这里插入图片描述



速览重点:


const_iterator :表示 迭代器指向的数据 不能写
const iterator :表示 迭代器本身不能写


⭐🐔 以 int 类型的 const 修饰来类比解释 const_iterator 和 const iterator*

int* p; // 指针p 类比 iterator
const int* p;  // 表示指针p指向的内容 *p 不能修改:这里类比  const_iterator
int* const p; // 表示指针p本身不能修改:这里类比 const iterator






关于 const_iterator 迭代器 :是 保护迭代器指向的数据 不能写

从这段程序看起:第二句程序报错

int main()
{const string s1 = "hello world";  // const 修饰 s1,使 s1 不能修改string::iterator it1 = s1.begin();  // 这里直接 报错while (it1 != s1.end()) {cout << *it1 << ' ';++it1;}
}

在这里插入图片描述


⭐🐔报错原因:const 修饰 s1,begin() 会调用 第二条函数,返回 const_iterator 类型的迭代器

  • iterator 可读可写
  • const_iterator 只读
string::iterator it1 = s1.begin();  // 报错

而这里 string::iterator 是可读可写的,因此这里属于权限放大



⭐🐔疑问:为什么不是 const iterator ?即为什么不是 const 修饰 iterator ,而是重新命名成const_iterator

const_iterator 是保护迭代器指向的数据不能写

这里是迭代器访问别人,(是别人不能写),而不是读写迭代器本身

如果 const 修饰 迭代器,则会使 迭代器本身不能修改:则 ++it 失效

(而要使迭代器本身不能写就要用const修饰:const iterator)



在这里插入图片描述

总结:const_iterator 是另一个类型,表示 迭代器指向的内容不能修改(但是迭代器本身是可以修改的,++it 用于遍历)




关键字:【C++修炼之路 第五章】const_iterator 和 const iterator 的区别

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: