【发布时间】:2013-11-25 06:06:16
【问题描述】:
我有一个自定义容器类,它实现了cbegin() 和cend() 函数。然后我在foreach循环中使用它,但它似乎需要begin()和end()成员函数,即使我尝试使用const修饰符:
for (const auto val: container)
像这样:
for (auto const val: container)
像这样:
for (const auto const val: container)
是否可以强制 foreach 使用常量 c 函数?
【问题讨论】:
-
不,它只使用
begin和end。如果对 const 对象进行操作,只需创建begin和end函数返回const_iterator。 -
@chris 但是如果我们想
constly 迭代一个可变对象呢?我们必须做演员吗? -
@uk4321,我相信标准容器也存在同样的问题。
-
您知道代码中的
it实际上不是迭代器,而是迭代器包含的类型的实例?你可能想说for (const auto& inst : container) -
@kfsone 是的,这是真的。谢谢,我已经更新了代码。但就我而言,它只是一个整数。
标签: c++ c++11 iterator containers