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!
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