diff options
-rw-r--r-- | Source/cmPropertyMap.cxx | 9 | ||||
-rw-r--r-- | Source/cmPropertyMap.h | 8 |
2 files changed, 14 insertions, 3 deletions
diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx index 64bceb5..3ed4c05 100644 --- a/Source/cmPropertyMap.cxx +++ b/Source/cmPropertyMap.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmPropertyMap.h" +#include <algorithm> #include <utility> void cmPropertyMap::Clear() @@ -59,15 +60,21 @@ std::vector<std::string> cmPropertyMap::GetKeys() const for (auto const& item : Map_) { keyList.push_back(item.first); } + std::sort(keyList.begin(), keyList.end()); return keyList; } std::vector<std::pair<std::string, std::string>> cmPropertyMap::GetList() const { - std::vector<std::pair<std::string, std::string>> kvList; + typedef std::pair<std::string, std::string> StringPair; + std::vector<StringPair> kvList; kvList.reserve(Map_.size()); for (auto const& item : Map_) { kvList.emplace_back(item.first, item.second); } + std::sort(kvList.begin(), kvList.end(), + [](StringPair const& a, StringPair const& b) { + return a.first < b.first; + }); return kvList; } diff --git a/Source/cmPropertyMap.h b/Source/cmPropertyMap.h index 6284e8c..9aed349 100644 --- a/Source/cmPropertyMap.h +++ b/Source/cmPropertyMap.h @@ -5,11 +5,14 @@ #include "cmConfigure.h" // IWYU pragma: keep -#include <map> #include <string> +#include <unordered_map> #include <utility> #include <vector> +/** \class cmPropertyMap + * \brief String property map. + */ class cmPropertyMap { public: @@ -34,6 +37,7 @@ public: void RemoveProperty(const std::string& name); // -- Lists + //! Get a sorted list of property keys std::vector<std::string> GetKeys() const; @@ -41,7 +45,7 @@ public: std::vector<std::pair<std::string, std::string>> GetList() const; private: - std::map<std::string, std::string> Map_; + std::unordered_map<std::string, std::string> Map_; }; #endif |