Monday, July 1, 2013

stl::map iterator

Newsgroup: comp.lang.c++

Subject: stl::map iterator

From: HungryGoat <kumar0112@...>

Date: Sun, 30 Jun 2013 19:30:05 -0700 (PDT)



Hi, I found this code in "The C++ Standard Library" book by Nikolai.



template <class Cont>

inline bool replace_key (Cont& c,

const typename Cont::key_type& old_key,

const typename Cont::key_type& new_key)

{

typename Cont::iterator pos;

pos = c.find(old_key);

if (pos != c.end()) {

//insert new element with value of old element

c.insert(typename Cont::value_type(new_key,

pos->second));



//remove old element

c.erase(pos);

return true;

}

else {

//key not found

return false;

}

}



My question is, in the call to c.erase(pos), aren't there chances that pos is invalidated by the previous call to insert?



I am under the impression that insert or delete invalidates the iterators.



Cheers!







via Usenet Forums - Usenet Search,Free Usenet - comp.lang.c++ http://www.pocketbinaries.com/usenet-forums/showthread.php?32418-stl-map-iterator&goto=newpost

View all the progranning help forums at:

http://www.pocketbinaries.com/usenet-forums/forumdisplay.php?128-Coding-forums

No comments:

Post a Comment