std::vector iterator as a class member

user3194233

I am puzzled by the behaviour of the following code.

I have a dummy class with a vector member. I would also like an iterator member so I can access the vector in the various methods without having to declare a new one each time. It seems OK until I introduce a const method.

The test1 method uses the vector and the iterator members just fine.

The test2 method throws a compile error when I try to use the const_iterator member with the vector. However, if I declare a new const_iterator in the method it compiles.

Can someone please explain this behaviour.

Thanks

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
        }
};
Abhishek Bansal

You cannot change values of member variables in a const function.

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

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

std::vector initialization of class member

From Dev

Inheriting std::vector::iterator for custom class?

From Dev

STL string member in class contained in std::vector

From Dev

class std::vector<...> has no member named

From Dev

Python iterator as class member?

From Dev

std::vector<std::basic_string<char> >::const_iterator’ has no member named ‘c_str’

From Dev

iterator_category': is not a member of any base class of 'std::iterator_traits<_InIt>'

From Dev

Overloading the class subscript operator to access elements of a member std::vector object

From Dev

Class of std::vector vs non-member functions (along with a typedef)

From Dev

No find member in std::vector

From Dev

Iterator validity for std::vector<std::vector<T>>

From Dev

C++ compiler: 'class std::vector<std::vector<char> >' has no member named 'emplace_back'

From Dev

C++ compiler: 'class std::vector<std::vector<char> >' has no member named 'emplace_back'

From Dev

Remove by iterator from std::vector

From Dev

Delete vector class member

From Dev

std::tuple as class member

From Dev

Class with explicit destructor and std::unique_ptr<> member can't be used in std::vector<>?

From Dev

Smart way to construct class member std::vector<std::unique_ptr<AClass> >

From Dev

Access member of a iterator of a vector of unique_ptr

From Dev

Move Semantics for std::vector member

From Dev

Vector is not a member of std with everything included

From Dev

iterator on a vector with templated class elements

From Dev

Use std::vector::iterator to alter values stored in std::vector?

From Dev

Destructor for std::vector in a class

From Dev

Search a Vector of Classes by a member of the Class

From Dev

Management of a vector of pointers as a class member

From Dev

Type independent vector class member

From Dev

Management of a vector of pointers as a class member

From Dev

Base class with a vector<int> member

Related Related

  1. 1

    std::vector initialization of class member

  2. 2

    Inheriting std::vector::iterator for custom class?

  3. 3

    STL string member in class contained in std::vector

  4. 4

    class std::vector<...> has no member named

  5. 5

    Python iterator as class member?

  6. 6

    std::vector<std::basic_string<char> >::const_iterator’ has no member named ‘c_str’

  7. 7

    iterator_category': is not a member of any base class of 'std::iterator_traits<_InIt>'

  8. 8

    Overloading the class subscript operator to access elements of a member std::vector object

  9. 9

    Class of std::vector vs non-member functions (along with a typedef)

  10. 10

    No find member in std::vector

  11. 11

    Iterator validity for std::vector<std::vector<T>>

  12. 12

    C++ compiler: 'class std::vector<std::vector<char> >' has no member named 'emplace_back'

  13. 13

    C++ compiler: 'class std::vector<std::vector<char> >' has no member named 'emplace_back'

  14. 14

    Remove by iterator from std::vector

  15. 15

    Delete vector class member

  16. 16

    std::tuple as class member

  17. 17

    Class with explicit destructor and std::unique_ptr<> member can't be used in std::vector<>?

  18. 18

    Smart way to construct class member std::vector<std::unique_ptr<AClass> >

  19. 19

    Access member of a iterator of a vector of unique_ptr

  20. 20

    Move Semantics for std::vector member

  21. 21

    Vector is not a member of std with everything included

  22. 22

    iterator on a vector with templated class elements

  23. 23

    Use std::vector::iterator to alter values stored in std::vector?

  24. 24

    Destructor for std::vector in a class

  25. 25

    Search a Vector of Classes by a member of the Class

  26. 26

    Management of a vector of pointers as a class member

  27. 27

    Type independent vector class member

  28. 28

    Management of a vector of pointers as a class member

  29. 29

    Base class with a vector<int> member

HotTag

Archive