summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Holtermann <sebholt@xwmw.org>2019-06-03 08:29:12 (GMT)
committerSebastian Holtermann <sebholt@xwmw.org>2019-06-08 10:25:35 (GMT)
commit00d265e3c812516e2a71faed4f352b36f51112e2 (patch)
tree788623862269c9291c444bd2d947ff3b1f80584e
parent1b945f95bafc9a795b092904f7c6bd84dad940e8 (diff)
downloadCMake-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.cxx9
-rw-r--r--Source/cmPropertyMap.h8
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