diff options
author | Sebastian Holtermann <sebholt@xwmw.org> | 2019-06-03 08:29:12 (GMT) |
---|---|---|
committer | Sebastian Holtermann <sebholt@xwmw.org> | 2019-06-08 10:25:35 (GMT) |
commit | 00d265e3c812516e2a71faed4f352b36f51112e2 (patch) | |
tree | 788623862269c9291c444bd2d947ff3b1f80584e | |
parent | 1b945f95bafc9a795b092904f7c6bd84dad940e8 (diff) | |
download | CMake-00d265e3c812516e2a71faed4f352b36f51112e2.zip CMake-00d265e3c812516e2a71faed4f352b36f51112e2.tar.gz CMake-00d265e3c812516e2a71faed4f352b36f51112e2.tar.bz2 |
cmPropertyMap: Use std::unordered_map as container instead of std::map
-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 |