【问题标题】:std::vector iterator as a class memberstd::vector 迭代器作为类成员
【发布时间】:2014-02-02 14:47:48
【问题描述】:

我对以下代码的行为感到困惑。

我有一个带有向量成员的虚拟类。我还想要一个迭代器成员,这样我就可以在各种方法中访问向量,而不必每次都声明一个新的。在我引入 const 方法之前似乎还可以。

test1 方法使用向量和迭代器成员就好了。

当我尝试将 const_iterator 成员与向量一起使用时,test2 方法会引发编译错误。但是,如果我在它编译的方法中声明一个新的 const_iterator。

谁能解释一下这种行为。

谢谢

class dummy {
    public:
        std::vector<double> data;
        // Declare iterators as members
        std::vector<double>::iterator iterator1;
        std::vector<double>::const_iterator const_iterator1;

        void test1(){
            iterator1 = data.begin();
        }

        void test2() const {
             // const_iterator1 = data.begin(); // Fails
            std::vector<double>::const_iterator const_iterator2 = data.begin(); // Compiles
        }
};

【问题讨论】:

    标签: c++ vector


    【解决方案1】:

    您不能在const 函数中更改成员变量的值。

    const_iterator1 = data.begin(); // Changes the value of const_iterator1 member variable
    

    【讨论】:

    • 啊!现在太明显了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2018-07-24
    • 1970-01-01
    • 2011-04-14
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多