#include <iostream> #include <unordered_map> //引头文件 using namespace std; class Book { private: string num; string name; public: Book() {}; Book(string num,string name) { this ->name = name;this ->num = num;}; string getNum() { return num;}; string getName() { return name;}; }; int main() { unordered_map<string,Book>lib; //泛型定义,string为key,Book为value Book b("001","高级语言程序设计") ; lib[b.getNum()] = b; //放入键值对,key为: b.getNum(),value为b unordered_map<string,Book>::iterator it; //声明迭代器用于访问 it = lib.find( *(new string("001")) ); //find(KeyType &key),用key去匹配并返回该key的迭代器, 没有的话返回迭代器末尾 if ( it != lib.end() ) cout << (it ->second).getName(); //迭代器访问第二个项目,即value的所在项,此处为一个book类型,对其调用getName()函数 else cout << "没有给元素!"; return 0; }
note:
1.内部实现为: hasht_table
2.示例中,已string为key,unorder_map已经为string创建了hash值计算函数,所以无需重写(貌似是这样的)