c++stliterator

Can I initialize an iterator with null, and if not why?


I'm trying to initialize an iterator to NULL, but it's not working. Can anyone help me?

If a pointer can be initialized with null, why can't we do that for an iterator?

vector<int> bob;
vector<int>::iterator it=NULL;

I want to initialize an iterator in a class constructor so that at the time of creation of an object of the class, the iterator should be set to NULL (default).


Solution

  • No, in general you cannot initialize an iterator with NULL. The iterator requirements do not require an iterator to be assignable or initializable from either an integer type or std::nullptr_t, the possible types that NULL can have.

    There is no point in trying to do that. It is simply not needed. But since you have not explained why you would try to do that, I can't really make any further suggestions.


    Regarding your further questions in the comments: You can value-initialize every forward iterator:

    vector<int>::iterator it{}; // value-initialized
    

    Since C++14 you are guaranteed that comparing iterators of the same type constructed in this way compare equal.

    All container iterators are forward iterators.