From 279150bc3b8bd224e98950ed1f75ebc14c73704e Mon Sep 17 00:00:00 2001 From: MinaciousGrace Date: Wed, 3 May 2017 15:11:23 -0400 Subject: [PATCH] use unordered maps for string keyed scores --- src/ChartScores.cpp | 8 ++++---- src/ChartScores.h | 5 +++-- src/Foreach.h | 8 ++++++++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/ChartScores.cpp b/src/ChartScores.cpp index 11f42cc55f..2e11b1078a 100644 --- a/src/ChartScores.cpp +++ b/src/ChartScores.cpp @@ -20,7 +20,7 @@ void ScoresAtRate::AddScore(HighScore& hs) { vector ScoresAtRate::GetSortedKeys() { map> tmp; vector o; - FOREACHM(string, HighScore, scores, i) + FOREACHUM(string, HighScore, scores, i) tmp.emplace(i->second.GetWifeScore(), i->first); FOREACHM(float, string, tmp, j) o.emplace_back(j->second); @@ -92,7 +92,7 @@ HighScore* PlayerScores::GetChartPBUpTo(string& ck, float& rate) { void PlayerScores::SortTopSSRPtrs(Skillset ss) { TopSSRs[ss].clear(); - FOREACHM(string, ScoresForChart, pscores, i) { + FOREACHUM(string, ScoresForChart, pscores, i) { if (!IsChartLoaded(i->first)) continue; vector pbs = i->second.GetAllPBPtrs(); @@ -150,7 +150,7 @@ XNode* ScoresAtRate::CreateNode(const int& rate) const { o->AppendAttr("BestGrade", GradeToString(bestGrade)); o->AppendAttr("Rate", rs); - FOREACHM_CONST(string, HighScore, scores, i) + FOREACHUM_CONST(string, HighScore, scores, i) o->AppendChild(i->second.CreateEttNode()); return o; @@ -169,7 +169,7 @@ XNode * ScoresForChart::CreateNode(const string& ck) const { XNode * PlayerScores::CreateNode() const { XNode* o = new XNode("PlayerScores"); - FOREACHM_CONST(string, ScoresForChart, pscores, ch) + FOREACHUM_CONST(string, ScoresForChart, pscores, ch) o->AppendChild(ch->second.CreateNode(ch->first)); return o; diff --git a/src/ChartScores.h b/src/ChartScores.h index c120eea887..f5002868ae 100644 --- a/src/ChartScores.h +++ b/src/ChartScores.h @@ -1,6 +1,7 @@ #include "Grade.h" #include "GameConstantsAndTypes.h" #include +#include @@ -18,7 +19,7 @@ struct ScoresAtRate vector GetSortedKeys(); void PushSelf(lua_State *L); - map scores; + unordered_map scores; XNode* CreateNode(const int& rate) const; void LoadFromNode(const XNode* node, const RString& key, const float& rate); @@ -89,7 +90,7 @@ class PlayerScores bool IsChartLoaded(const string& ck) { return true; } // obviously not functioning as intended yet - map pscores; + unordered_map pscores; map AllScores; vector TopSSRs[NUM_Skillset]; diff --git a/src/Foreach.h b/src/Foreach.h index 35d595c4fb..094fd234a6 100644 --- a/src/Foreach.h +++ b/src/Foreach.h @@ -44,6 +44,14 @@ for( multimap::iterator var = (vect).begin(); var != (vect).en #define FOREACHMM_CONST( keyType, valType, vect, var ) \ for( multimap::const_iterator var = (vect).begin(); var != (vect).end(); ++var ) +/** @brief General foreach loop iterating over an unordered map. */ +#define FOREACHUM( keyType, valType, vect, var ) \ +for( unordered_map::iterator var = (vect).begin(); var != (vect).end(); ++var ) + +/** @brief General foreach loop iterating over an unordered map. blah blah const blah*/ +#define FOREACHUM_CONST( keyType, valType, vect, var ) \ +for( unordered_map::const_iterator var = (vect).begin(); var != (vect).end(); ++var ) + #endif /**