通常使用map的键都是基本的数据类型,那map的键可以是自定义的对象嘛?答案当然是可以的!只是需要重载一下“<”运算符
例子:
#include <iostream> #include <map> struct Man{ std::string name; int age; bool operator<(const Man& g)const { if (age < g.age) { return true; } return false; } }; int main(int argc, char *argv[]) { std::map<Man, std::string> manMap; Man man1,man2,man3; man1.name = "aa"; man1.age = 20; man2.name = "bb"; man2.age = 21; man3.name = "bb"; man3.age = 22; manMap.insert(std::pair<Man, std::string>(man1, "man 1")); manMap[man2] = "man 2"; manMap[man3] = "man 3"; for(std::map<Man, std::string>::iterator iter = manMap.begin(); iter != manMap.end(); ++iter) { std::cout << iter->second << std::endl; } return 0; }
unordered_map的键使用自定义的对象,则需要自定义Hash函数与相等的判断条件。