From f7edf243564d4437255e5be0628936c6eb6148b1 Mon Sep 17 00:00:00 2001 From: Evil Eye Date: Sun, 13 Aug 2023 20:26:59 +0200 Subject: [PATCH] Use std::stable_sort --- apps/openmw/mwgui/trainingwindow.cpp | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/apps/openmw/mwgui/trainingwindow.cpp b/apps/openmw/mwgui/trainingwindow.cpp index e2749b8e30..2bd9e06bfe 100644 --- a/apps/openmw/mwgui/trainingwindow.cpp +++ b/apps/openmw/mwgui/trainingwindow.cpp @@ -69,15 +69,10 @@ namespace MWGui std::vector> skills; skills.reserve(maxSkills); - const auto sortSkills = [&]() { - for (size_t i = skills.size() - 1; i > 0; --i) - { - if (skills[i].second > skills[i - 1].second) - std::swap(skills[i], skills[i - 1]); - else - break; - } - }; + const auto sortByValue + = [](const std::pair& lhs, const std::pair& rhs) { + return lhs.second > rhs.second; + }; // Maintain a sorted vector of max maxSkills elements, ordering skills by value and content file order const MWMechanics::NpcStats& actorStats = actor.getClass().getNpcStats(actor); for (const ESM::Skill& skill : skillStore) @@ -86,7 +81,7 @@ namespace MWGui if (skills.size() < maxSkills) { skills.emplace_back(&skill, value); - sortSkills(); + std::stable_sort(skills.begin(), skills.end(), sortByValue); } else { @@ -95,7 +90,7 @@ namespace MWGui { lowest.first = &skill; lowest.second = value; - sortSkills(); + std::stable_sort(skills.begin(), skills.end(), sortByValue); } } }