#include <iostream>
#include <vector>
#include <map>
struct Thing {
Thing(const char* const name_) : m_name(name_) { std::cout << "created " << m_name << '\n'; }
Thing(const Thing& rhs_) : m_name(rhs_.m_name) { std::cout << "copied " << m_name << '\n'; }
Thing(Thing&& rhs_) : m_name(rhs_.m_name) { std::cout << "moved " << m_name << '\n'; rhs_.m_name = nullptr; }
Thing& operator = (const Thing& rhs_) { m_name = rhs_.m_name; std::cout << "=& " << m_name; return *this; }
Thing& operator = (Thing&& rhs_) { m_name = rhs_.m_name; std::cout << "=&& " << m_name; rhs_.m_name = nullptr; return *this; }
~Thing() { std::cout << "dtor(" << (m_name ? m_name : "null") << ")\n"; }
const char* m_name;
};
int main() {
std::map<int64_t, std::vector<Thing>> myMap { { 1, { "Hello", "World" } }, { 2, { "Eat", "Pizza" } } };
std::cout << "for\n";
for (auto kv : myMap) {
std::cout << "for " << kv.first << " -> " << kv.second[0].m_name << "\n";
}
std::cout << "endfor\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgoKc3RydWN0IFRoaW5nIHsKICBUaGluZyhjb25zdCBjaGFyKiBjb25zdCBuYW1lXykgOiBtX25hbWUobmFtZV8pIHsgc3RkOjpjb3V0IDw8ICJjcmVhdGVkICIgPDwgbV9uYW1lIDw8ICdcbic7IH0KICBUaGluZyhjb25zdCBUaGluZyYgcmhzXykgOiBtX25hbWUocmhzXy5tX25hbWUpIHsgc3RkOjpjb3V0IDw8ICJjb3BpZWQgIiA8PCBtX25hbWUgPDwgJ1xuJzsgfQogIFRoaW5nKFRoaW5nJiYgcmhzXykgOiBtX25hbWUocmhzXy5tX25hbWUpIHsgc3RkOjpjb3V0IDw8ICJtb3ZlZCAiIDw8IG1fbmFtZSA8PCAnXG4nOyByaHNfLm1fbmFtZSA9IG51bGxwdHI7IH0KICBUaGluZyYgb3BlcmF0b3IgPSAoY29uc3QgVGhpbmcmIHJoc18pIHsgbV9uYW1lID0gcmhzXy5tX25hbWU7IHN0ZDo6Y291dCA8PCAiPSYgIiA8PCBtX25hbWU7IHJldHVybiAqdGhpczsgfQogIFRoaW5nJiBvcGVyYXRvciA9IChUaGluZyYmIHJoc18pIHsgbV9uYW1lID0gcmhzXy5tX25hbWU7IHN0ZDo6Y291dCA8PCAiPSYmICIgPDwgbV9uYW1lOyByaHNfLm1fbmFtZSA9IG51bGxwdHI7IHJldHVybiAqdGhpczsgfQogIH5UaGluZygpIHsgc3RkOjpjb3V0IDw8ICJkdG9yKCIgPDwgKG1fbmFtZSA/IG1fbmFtZSA6ICJudWxsIikgPDwgIilcbiI7IH0KCiAgY29uc3QgY2hhciogbV9uYW1lOwp9OwppbnQgbWFpbigpIHsKICBzdGQ6Om1hcDxpbnQ2NF90LCBzdGQ6OnZlY3RvcjxUaGluZz4+IG15TWFwIHsgeyAxLCB7ICJIZWxsbyIsICJXb3JsZCIgfSB9LCB7IDIsIHsgIkVhdCIsICJQaXp6YSIgfSB9IH07CiAgc3RkOjpjb3V0IDw8ICJmb3JcbiI7CiAgZm9yIChhdXRvIGt2IDogbXlNYXApIHsKICAgIHN0ZDo6Y291dCA8PCAiZm9yICIgPDwga3YuZmlyc3QgPDwgIiAtPiAiIDw8IGt2LnNlY29uZFswXS5tX25hbWUgPDwgIlxuIjsKICB9CiAgc3RkOjpjb3V0IDw8ICJlbmRmb3JcbiI7Cn0=