The stlsoft::frequency_map container class template now includes a merge() method, which allows the contents from two frequency map instances to be merged into one, as in:
typedef std::string string_t;
typedef stlsoft::frequency_map<string_t> fmap_t;
fmap_t map1;
fmap_t map2;
map1.push("key-11");
map1.push("key-22");
XTESTS_TEST_BOOLEAN_FALSE(map1.empty());
XTESTS_TEST_INTEGER_EQUAL(2u, map1.size());
XTESTS_TEST_INTEGER_EQUAL(1u, map1["key-11"]);
XTESTS_TEST_INTEGER_EQUAL(1u, map1["key-22"]);
map2.push("key-11");
map2.push("key-21");
XTESTS_TEST_BOOLEAN_FALSE(map2.empty());
XTESTS_TEST_INTEGER_EQUAL(2u, map2.size());
XTESTS_TEST_INTEGER_EQUAL(1u, map2["key-11"]);
XTESTS_TEST_INTEGER_EQUAL(1u, map2["key-21"]);
map1.merge(map2);
XTESTS_TEST_BOOLEAN_FALSE(map1.empty());
XTESTS_TEST_INTEGER_EQUAL(3u, map1.size());
XTESTS_TEST_INTEGER_EQUAL(2u, map1["key-11"]);
XTESTS_TEST_INTEGER_EQUAL(1u, map1["key-21"]);
XTESTS_TEST_INTEGER_EQUAL(1u, map1["key-22"]);
XTESTS_TEST_BOOLEAN_FALSE(map2.empty());
XTESTS_TEST_INTEGER_EQUAL(2u, map2.size());
XTESTS_TEST_INTEGER_EQUAL(1u, map2["key-11"]);
XTESTS_TEST_INTEGER_EQUAL(1u, map2["key-21"]);
map2.clear();
XTESTS_TEST_BOOLEAN_FALSE(map1.empty());
XTESTS_TEST_INTEGER_EQUAL(3u, map1.size());
XTESTS_TEST_INTEGER_EQUAL(2u, map1["key-11"]);
XTESTS_TEST_INTEGER_EQUAL(1u, map1["key-21"]);
XTESTS_TEST_INTEGER_EQUAL(1u, map1["key-22"]);
XTESTS_TEST_INTEGER_EQUAL(0u, map2.size());
XTESTS_TEST_BOOLEAN_TRUE(map2.empty());
No comments:
Post a Comment