如何用迭代器迭代const对象?

时间:2017-12-09 23:54:10

标签: c++ c++11 iterator

void foo(const std::vector<int>& value) {
    std::vector<int>::iterator it = value.begin();
    /* functions that increment it */
}

我需要让非const迭代器迭代const对象,我将迭代器传递给另一个函数然后递增它。但我得到一个关于尝试将const_iterator转换为迭代器的错误。我如何获得非const迭代器(如果可能的话)。

void foo(std::vector<int>& value) {
    std::vector<int>::iterator it = value.begin();
    /* functions that increment it */
}

当然我尝试使用非const引用但是它不允许我这样调用函数...

object.foo({0,1});

我知道最简单的解决方案是不将其作为参考而是作为副本

void foo(std::vector<int> value) {
    std::vector<int>::iterator it = value.begin();
    /* functions that increment it */
}

但我想让它尽可能有效(时间和记忆)。

1 个答案:

答案 0 :(得分:1)

使用std :: vector&lt;&gt; :: const_iterator。