簡體   English   中英

std :: vector迭代器作為類成員

[英]std::vector iterator as a class member

以下代碼的行為令我感到困惑。

我有一個帶有向量成員的虛擬類。 我也想要一個迭代器成員,這樣我就可以通過各種方法訪問向量,而不必每次都聲明一個新的向量。 在介紹const方法之前,似乎還可以。

test1方法使用vector和迭代器成員就可以了。

當我嘗試將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
        }
};

您不能在const函數中更改成員變量的值。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM