#include <iostream>
#include <map>
class ReportCard
{
//private: this is the default anyway for a class
public: //made to be able to print the internals below.
std::map<std::string, double> m_report_card;
public:
/* this returns an instance of the std::map. The map is copied and
returned, so any modifications will not affect m_report_card
std::map<std::string, double> getReportCardInstance()
{
return m_report_card;
}
if you want to do this, return std::map<std::string, double>&.
std::map<std::string, double>& getReportCardInstance()
{
return m_report_card;
}
*/
// better solution is to have a method to add the report
void add_report(const std::string& first,double second)
{
m_report_card[first] = second;
}
};
int main() {
ReportCard rc;
rc.add_report("Percy",1.0);
rc.add_report("Pig",2.0);
for(auto internal_report_card : rc.m_report_card)
{
std::cout << internal_report_card.first << ", "
<< internal_report_card.second << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgoKY2xhc3MgUmVwb3J0Q2FyZAp7CiAgIC8vcHJpdmF0ZTogIHRoaXMgaXMgdGhlIGRlZmF1bHQgYW55d2F5IGZvciBhIGNsYXNzCiAgIHB1YmxpYzogLy9tYWRlIHRvIGJlIGFibGUgdG8gcHJpbnQgdGhlIGludGVybmFscyBiZWxvdy4KICAgICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgZG91YmxlPiBtX3JlcG9ydF9jYXJkOwoKICAgcHVibGljOgoKCiAgICAgICAgLyogdGhpcyByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBzdGQ6Om1hcC4gVGhlIG1hcCBpcyBjb3BpZWQgYW5kIAogICAgICAgIHJldHVybmVkLCBzbyBhbnkgbW9kaWZpY2F0aW9ucyB3aWxsIG5vdCBhZmZlY3QgbV9yZXBvcnRfY2FyZAogICAgICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBkb3VibGU+IGdldFJlcG9ydENhcmRJbnN0YW5jZSgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gbV9yZXBvcnRfY2FyZDsKICAgICAgICB9CgogICAgICAgIGlmIHlvdSB3YW50IHRvIGRvIHRoaXMsIHJldHVybiBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgZG91YmxlPiYuCiAgICAgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIGRvdWJsZT4mIGdldFJlcG9ydENhcmRJbnN0YW5jZSgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gbV9yZXBvcnRfY2FyZDsKICAgICAgICB9CiAgICAgICAgKi8KCiAgICAgICAgLy8gYmV0dGVyIHNvbHV0aW9uIGlzIHRvIGhhdmUgYSBtZXRob2QgdG8gYWRkIHRoZSByZXBvcnQKCiAgICAgICAgdm9pZCBhZGRfcmVwb3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiBmaXJzdCxkb3VibGUgc2Vjb25kKQogICAgICAgIHsKICAgICAgICAgICAgbV9yZXBvcnRfY2FyZFtmaXJzdF0gPSBzZWNvbmQ7CiAgICAgICAgfSAgCgp9OwoKCmludCBtYWluKCkgewogICAgUmVwb3J0Q2FyZCByYzsKICAgIHJjLmFkZF9yZXBvcnQoIlBlcmN5IiwxLjApOwogICAgcmMuYWRkX3JlcG9ydCgiUGlnIiwyLjApOwoKICAgIGZvcihhdXRvIGludGVybmFsX3JlcG9ydF9jYXJkIDogcmMubV9yZXBvcnRfY2FyZCkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgaW50ZXJuYWxfcmVwb3J0X2NhcmQuZmlyc3QgPDwgIiwgIiAKICAgICAgICAgICAgICAgICAgPDwgaW50ZXJuYWxfcmVwb3J0X2NhcmQuc2Vjb25kIDw8IHN0ZDo6ZW5kbDsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==