c++ - 是否应该避免从非常量迭代器到常量迭代器的转换?
问题描述
我试图将 aconst iterator
与 a进行比较,non-const iterator
但不确定是否可以,所以我查了一下。我发现这是可以的,因为隐式转换non-const iterator
为const iterator
. 但是,我想知道您是否应该不比较这些迭代器,以避免这种转换。例如,
begin_iterator = buf.begin(); end_iterator = buf.cend();
for (; begin_iterator != end_iterator; ++begin_iterator) { ... }
通常,我认为这没问题,因为 const 表示只读,这很好。但是,我不确定(不必要的)转换。
解决方案
将非 const 迭代器转换为 const 迭代器总是好的,就像将非 const 指针转换为 const 指针一样。
相反,您不想这样做,它可能会导致崩溃(例如,因为数据仅存储在 const 空间中)。所以永远不要这样做。
推荐阅读
- reactjs - 键入“更改事件”
' 不可分配给类型 'ChangeEvent ' 在 React js 中? - database - 警告:无法打开统计文件“pg_stat_tmp/global.stat”:过时的文件句柄
- autodesk-forge - 在 Autodesk Forge 中创建新面板
- android - 我的 Android 工作室可绘制资源文件夹以非常拥挤的方式导入
- angular - 当 aot=true(生产)时 Angular 10 吨构建错误
- javascript - Javascript - 从嵌套数组中删除对象
- flutter - 如何使用 JSON 数据制作表单
- leaflet - 将鼠标悬停在传单中的任何特征上时触发多个特征的事件
- javascript - 如何使用 Selenium Python 在新选项卡中打开 JavaScript 链接?
- apache-spark - hadoop yarn UI中的“队列百分比”指的是什么