use std::map::erase(const_iterator, const_iterator) to get non-constant iterator
This commit is contained in:
parent
bc94b87487
commit
947913fc54
1 changed files with 5 additions and 2 deletions
|
@ -66,8 +66,11 @@ public:
|
|||
}
|
||||
void update(const_iterator itIn, const mapped_type& v)
|
||||
{
|
||||
// TODO: When we switch to C++11, use map.erase(itIn, itIn) to get the non-const iterator.
|
||||
iterator itTarget = map.find(itIn->first);
|
||||
// Using map::erase() with empty range instead of map::find() to get a non-const iterator,
|
||||
// since it is a constant time operation in C++11. For more details, see
|
||||
// https://stackoverflow.com/questions/765148/how-to-remove-constness-of-const-iterator
|
||||
iterator itTarget = map.erase(itIn, itIn);
|
||||
|
||||
if (itTarget == map.end())
|
||||
return;
|
||||
std::pair<rmap_iterator, rmap_iterator> itPair = rmap.equal_range(itTarget->second);
|
||||
|
|
Loading…
Reference in a new issue