From 031692124cd02c1b38ded42cc4ed6ffa4f993bbd Mon Sep 17 00:00:00 2001 From: David Rosca <roscadav@fit.cvut.cz> Date: Sun, 22 Mar 2015 15:43:05 +0100 Subject: [PATCH] std/compare.hpp: Fix compare for unordered_map unordered_map is unordered (O.o) so it cannot be compared by two simultaneous iterators --- alib2data/src/std/compare.hpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/alib2data/src/std/compare.hpp b/alib2data/src/std/compare.hpp index 0f4e188f56..7a22279d58 100644 --- a/alib2data/src/std/compare.hpp +++ b/alib2data/src/std/compare.hpp @@ -122,9 +122,11 @@ struct compare<unordered_map<T, R>> { if(first.size() < second.size()) return -1; if(first.size() > second.size()) return 1; - compare<std::pair<T, R>> comp; - for(auto iterF = first.begin(), iterS = second.begin(); iterF != first.end(); iterF++, iterS++) { - int res = comp(*iterF, *iterS); + compare<R> comp; + for(auto iter = first.begin(); iter != first.end(); iter++) { + auto search = second.find(iter->first); + if(search == second.end()) return -1; + int res = comp(iter->second, search->second); if(res != 0) return res; } return 0; -- GitLab