From fd68089214d3f01cb2fdf941d2732614db3f7a78 Mon Sep 17 00:00:00 2001 From: Nav Date: Tue, 30 Aug 2022 02:00:01 +0100 Subject: [PATCH] Corrected iterators invalidation bug in BiMap class --- src/Helpers/BiMap.hpp | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/src/Helpers/BiMap.hpp b/src/Helpers/BiMap.hpp index b83ce4c0..70a101ed 100644 --- a/src/Helpers/BiMap.hpp +++ b/src/Helpers/BiMap.hpp @@ -1,7 +1,7 @@ #pragma once #include -#include +#include namespace Bloom { @@ -22,13 +22,8 @@ namespace Bloom public: BiMap(std::initializer_list> elements) { for (auto it = elements.begin(); it != elements.end(); ++it) { - auto insertResultPair = this->map.insert(std::pair{it->first, it->second}); - this->flippedMap.insert( - std::pair::iterator>{ - it->second, - insertResultPair.first - } - ); + this->map.insert(std::pair{it->first, it->second}); + this->flippedMap.insert(std::pair(it->second, it->first)); } } @@ -54,7 +49,7 @@ namespace Bloom std::optional output; if (this->contains(key)) { - output = this->flippedMap.find(key)->second->first; + output = this->flippedMap.find(key)->second; } return output; @@ -65,7 +60,7 @@ namespace Bloom } const TypeA& at(const TypeB& key) const { - return this->flippedMap.at(key)->first; + return this->flippedMap.at(key); } [[nodiscard]] std::unordered_map getMap() const { @@ -74,14 +69,11 @@ namespace Bloom void insert(const std::pair& pair) { auto insertResultPair = this->map.insert(pair); - this->flippedMap.insert(std::pair::iterator>( - pair.second, - insertResultPair.first - )); + this->flippedMap.insert(std::pair(pair.second, pair.first)); } private: std::unordered_map map = {}; - std::unordered_map::iterator> flippedMap = {}; + std::unordered_map flippedMap = {}; }; }