This commit is contained in:
nlohmann committed 2026-10-12 07:35:31 +00:00
1 parent 79119509a9
commit 22fba27145
555 files changed
+17342 -1394

No files matched your search

+49 -2
View File
@@ -115,13 +115,60 @@ This differs from `#!cpp std::map`, where the same operations are O(log n).
The example shows the different behavior of `std::map` and `nlohmann::ordered_map`.
```cpp
--8<-- "examples/ordered_map.cpp"
#include <iostream>
#include <nlohmann/json.hpp>
// simple output function
template<typename Map>
void output(const char* prefix, const Map& m)
{
std::cout << prefix << " = { ";
for (auto& element : m)
{
std::cout << element.first << ":" << element.second << ' ';
}
std::cout << "}" << std::endl;
}
int main()
{
// create and fill two maps
nlohmann::ordered_map<std::string, std::string> m_ordered;
m_ordered["one"] = "eins";
m_ordered["two"] = "zwei";
m_ordered["three"] = "drei";
std::map<std::string, std::string> m_std;
m_std["one"] = "eins";
m_std["two"] = "zwei";
m_std["three"] = "drei";
// output: m_ordered is ordered by insertion order, m_std is ordered by key
output("m_ordered", m_ordered);
output("m_std", m_std);
// erase and re-add "one" key
m_ordered.erase("one");
m_ordered["one"] = "eins";
m_std.erase("one");
m_std["one"] = "eins";
// output: m_ordered shows newly added key at the end; m_std is again ordered by key
output("m_ordered", m_ordered);
output("m_std", m_std);
}
```
Output:
```json
--8<-- "examples/ordered_map.output"
m_ordered = { one:eins two:zwei three:drei }
m_std = { one:eins three:drei two:zwei }
m_ordered = { two:zwei three:drei one:eins }
m_std = { one:eins three:drei two:zwei }
```
## See also