首页 > 解决方案 > 是否应该避免从非常量迭代器到常量迭代器的转换?

问题描述

我试图将 aconst iterator与 a进行比较,non-const iterator但不确定是否可以,所以我查了一下。我发现这是可以的,因为隐式转换non-const iteratorconst iterator. 但是,我想知道您是否应该不比较这些迭代器,以避免这种转换。例如,

begin_iterator = buf.begin();  end_iterator = buf.cend();
for (; begin_iterator != end_iterator; ++begin_iterator) { ... }

通常,我认为这没问题,因为 const 表示只读,这很好。但是,我不确定(不必要的)转换。

标签: c++iteratorconst-iterator

解决方案


将非 const 迭代器转换为 const 迭代器总是好的,就像将非 const 指针转换为 const 指针一样。

相反,您不想这样做,它可能会导致崩溃(例如,因为数据仅存储在 const 空间中)。所以永远不要这样做。


推荐阅读