diff --git a/include/yaml-cpp/node/detail/node_data.h b/include/yaml-cpp/node/detail/node_data.h index 64bbc05..50bcd74 100644 --- a/include/yaml-cpp/node/detail/node_data.h +++ b/include/yaml-cpp/node/detail/node_data.h @@ -114,7 +114,7 @@ class YAML_CPP_API node_data { mutable std::size_t m_seqSize; // map - typedef std::map node_map; + typedef std::vector> node_map; node_map m_map; typedef std::pair kv_pair; diff --git a/include/yaml-cpp/node/detail/node_iterator.h b/include/yaml-cpp/node/detail/node_iterator.h index a33049a..d5f4af8 100644 --- a/include/yaml-cpp/node/detail/node_iterator.h +++ b/include/yaml-cpp/node/detail/node_iterator.h @@ -37,7 +37,7 @@ struct node_iterator_value : public std::pair { }; typedef std::vector node_seq; -typedef std::map node_map; +typedef std::vector> node_map; template struct node_iterator_type { diff --git a/src/node_data.cpp b/src/node_data.cpp index a862946..77cd465 100644 --- a/src/node_data.cpp +++ b/src/node_data.cpp @@ -256,9 +256,10 @@ void node_data::reset_map() { } void node_data::insert_map_pair(node& key, node& value) { - m_map[&key] = &value; + m_map.emplace_back(&key, &value); + if (!key.is_defined() || !value.is_defined()) - m_undefinedPairs.push_back(kv_pair(&key, &value)); + m_undefinedPairs.emplace_back(&key, &value); } void node_data::convert_to_map(shared_memory_holder pMemory) { diff --git a/test/node/node_test.cpp b/test/node/node_test.cpp index 2202f72..24c57ec 100644 --- a/test/node/node_test.cpp +++ b/test/node/node_test.cpp @@ -103,8 +103,8 @@ TEST(NodeTest, MapForceInsert) { node.force_insert(k2, v2); EXPECT_EQ("v1", node["k1"].as()); - EXPECT_EQ("v2", node["k2"].as()); - EXPECT_EQ(2, node.size()); + EXPECT_EQ("v1", node["k2"].as()); + EXPECT_EQ(3, node.size()); } TEST(NodeTest, UndefinedConstNodeWithFallback) {