map<string,int>m; for(auto c:m) { cout<<c.first<<' '; cout<<c.second<<'\n'; } 当然也可以用迭代器,但是太麻烦了。 unordered_map unordered_map 和 map 使用方法和特点类似,只是由于无序,它的插入和查询都是均摊 O(1) 的,最坏情况由于刻意制造的哈希冲突,会变成 O(n)。 遍历与 map 同...
基本操作 引用头文件(C++11):#include <unordered_map> 定义:unordered_map<int,int>、unordered_map<string, double>… 插入:例如将(“ABC” -> 5.45) 插入unordered_map<string, double> hash中,hash[“ABC”]=5.45 查询:hash[“ABC”]会返回5.45 判断ke...
#include <iostream> #include <unordered_map> #include <string> #include <functional> using namespace std; class Person{ public: string name; int age; Person(string n, int a){ name = n; age = a; } bool operator==(const Person & p) const { return name == p.name && age == p...
namespace library { struct book { int id; std::string author; std::string title; // ... }; bool operator==(book const& a, book const& b) { return a.id == b.id; } } // 定义函数 namespace library { std::size_t hash_value(book const& b) { boost::hash<int> hasher; ...
使用map或者unordered_map进行字符串查找一般都是用std::string类型作为key,但是std::string的效率实在太低,不得不进行优化,尝试使用char*作key来查找。 一、map以char*为key 默认的map<char *,int>的key是指针,比较的是指针值的大小,不能进行字符串的匹配。
unordered_map是C++中的哈希表,可以在任意类型与类型之间做映射。 基本操作 引用头文件(C++11):#include <unordered_map> 定义:unordered_map<int,int>、unordered_map<string, double> ... …
#include <iostream>#include <unordered_map>#include <string>// 自定义哈希函数struct MyHash {size_t operator()(const std::string& key) const {// 简单示例:将字符串的长度作为哈希值return key.length();}};// 自定义键比较谓词struct MyEqual {bool operator()(const std::string& lhs, const ...
基本操作 引用头文件(C++11):#include <unordered_map> 定义:unordered_map<int,int>、unordered_map<string, double>… 插入:例如将(“ABC” -> 5.45) 插入unordered_map<string, double> hash中,hash[“ABC”]=5.45 查询:hash[“ABC”]会返回5.45 ...
for (auto x: _data ) str += std::to_string(x); return str; } bool operator==(const MyClass &n) const { return _data == n._data; } }; 此时如果要把MyClass作为unordered_map的关键字,就需要指定如下哈希函数,因为类中重载了==符号,所以此时不需要指定Equal函数: ...
map<string, string> m1; unordered_map<string, bool> m2; unordered_map<string, int> ...