#include <map>
#include <string>
#include <iostream>
int main() {
// Creating & Initializing a map of String & Ints
std::map<std::string, int> mapOfWordCount = { { "aaa", 10 }, { "ddd", 41 },
{ "bbb", 62 }, { "ccc", 10} };
// Invert and filter the original map.
std::map<int, std::string> inverseMap;
for(const auto &kv : mapOfWordCount)
inverseMap.insert(make_pair(kv.second, kv.first));
// Print the inverted map (value before key to keep original key-value order).
for(const auto& kv : inverseMap)
std::cout << "{ \"" << kv.second << "\", " << kv.first << " }" << std::endl;
// Optional: Invert the inverted map again to get a std::map<std::string, int>.
std::map<std::string, int> setOfWords;
for(const auto& kv : inverseMap)
setOfWords[kv.second] = kv.first;
// Print the (sorted) target map.
std::cout << std::endl;
for(const auto& kv : setOfWords)
std::cout << "{ \"" << kv.first << "\", " << kv.second << " }" << std::endl;
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oKSB7CiAgICAvLyBDcmVhdGluZyAmIEluaXRpYWxpemluZyBhIG1hcCBvZiBTdHJpbmcgJiBJbnRzCiAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgaW50PiBtYXBPZldvcmRDb3VudCA9IHsgeyAiYWFhIiwgMTAgfSwgeyAiZGRkIiwgNDEgfSwKICAgICAgICAgICAgeyAiYmJiIiwgNjIgfSwgeyAiY2NjIiwgMTB9IH07CgogICAgLy8gSW52ZXJ0IGFuZCBmaWx0ZXIgdGhlIG9yaWdpbmFsIG1hcC4KICAgIHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+IGludmVyc2VNYXA7CiAgICBmb3IoY29uc3QgYXV0byAma3YgOiBtYXBPZldvcmRDb3VudCkKICAgICAgICBpbnZlcnNlTWFwLmluc2VydChtYWtlX3BhaXIoa3Yuc2Vjb25kLCBrdi5maXJzdCkpOwoKICAgIC8vIFByaW50IHRoZSBpbnZlcnRlZCBtYXAgKHZhbHVlIGJlZm9yZSBrZXkgdG8ga2VlcCBvcmlnaW5hbCBrZXktdmFsdWUgb3JkZXIpLgogICAgZm9yKGNvbnN0IGF1dG8mIGt2IDogaW52ZXJzZU1hcCkKICAgICAgICBzdGQ6OmNvdXQgPDwgInsgXCIiIDw8IGt2LnNlY29uZCA8PCAiXCIsICIgPDwga3YuZmlyc3QgPDwgIiB9IiA8PCBzdGQ6OmVuZGw7CgogICAgLy8gT3B0aW9uYWw6IEludmVydCB0aGUgaW52ZXJ0ZWQgbWFwIGFnYWluIHRvIGdldCBhIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBpbnQ+LgogICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIGludD4gc2V0T2ZXb3JkczsKICAgIGZvcihjb25zdCBhdXRvJiBrdiA6IGludmVyc2VNYXApCiAgICAgICAgc2V0T2ZXb3Jkc1trdi5zZWNvbmRdID0ga3YuZmlyc3Q7CgogICAgLy8gUHJpbnQgdGhlIChzb3J0ZWQpIHRhcmdldCBtYXAuCiAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwogICAgZm9yKGNvbnN0IGF1dG8mIGt2IDogc2V0T2ZXb3JkcykKICAgICAgICBzdGQ6OmNvdXQgPDwgInsgXCIiIDw8IGt2LmZpcnN0IDw8ICJcIiwgIiA8PCBrdi5zZWNvbmQgPDwgIiB9IiA8PCBzdGQ6OmVuZGw7Cn0=