Simplify Enumerator.

GitOrigin-RevId: e894e2f87ab773cfb775821974f7a264fe88c594
This commit is contained in:
levlam 2018-03-07 15:46:58 +03:00
parent 096743ba5e
commit f29b59dcf1

View File

@ -11,7 +11,7 @@
#include "td/utils/misc.h" #include "td/utils/misc.h"
#include <map> #include <map>
#include <utility> #include <tuple>
namespace td { namespace td {
@ -24,20 +24,17 @@ class Enumerator {
int32 next_id = narrow_cast<int32>(arr_.size() + 1); int32 next_id = narrow_cast<int32>(arr_.size() + 1);
bool was_inserted; bool was_inserted;
decltype(map_.begin()) it; decltype(map_.begin()) it;
std::tie(it, was_inserted) = map_.insert(std::make_pair(std::move(v), next_id)); std::tie(it, was_inserted) = map_.emplace(std::move(v), next_id);
if (was_inserted) { if (was_inserted) {
arr_.push_back(&it->first); arr_.push_back(&it->first);
} }
return it->second; return it->second;
} }
//ValueT &get(Key key) {
//CHECK(key != 0);
//return *arr_[narrow_cast<size_t>(key - 1)];
//}
const ValueT &get(Key key) const { const ValueT &get(Key key) const {
CHECK(key != 0); auto pos = static_cast<size_t>(key - 1);
return *arr_[narrow_cast<size_t>(key - 1)]; CHECK(pos < arr_.size());
return *arr_[pos];
} }
private: private: