Browse Source

use std::map::erase(const_iterator, const_iterator) to get non-constant iterator

0.14
whythat 8 years ago
parent
commit
947913fc54
  1. 7
      src/limitedmap.h

7
src/limitedmap.h

@ -66,8 +66,11 @@ public: @@ -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…
Cancel
Save