ネストしたmapは、
map<string, map<string, map<string, int> > > employees; employees["person1"]["gender"]["age"] = 200;
のように書くより、キーをtupleにしてしまった方が管理が楽。
map<tuple<string, string, string>, int> employees; employees[make_tuple("person1", "gender", "age")] = 200;
そして、それよりもクラスを作ろう。
#include <map> #include <string> #include <tuple> struct Employee { std::string person; std::string sex; std::string age; }; bool operator<(const Employee& a, const Employee& b) { return std::tie(a.person, a.sex, a.age) < std::tie(b.person, b.sex, b.age); } int main() { std::map<Employee, int> employees; employees[{"person1", "gender", "age"}] = 200; }