c++STL
C++11常用特性的使用经验总结
std::unordered_map与std::map用法基本差不多,std::map使用的数据结构为二叉树,而std::unordered_map内部是哈希表的实现方式;
// std::unordered_map与std::map用法基本差不多,但STL在内部实现上有很大不同, // std::map使用的数据结构为二叉树,而std::unordered_map内部是哈希表的实现方式, // 哈希map理论上查找效率为O(1)。但在存储效率上,哈希map需要增加哈希表的内存开销。 std::unordered_map<std::string, std::string> mymap = { { "house","maison" }, { "door","porte" }, { "grapefruit","pamplemousse" } }; // 1.统计长度 // int n = mymap.bucket_count(); int n = mymap.size(); cout << "unordere_map length: " << n << endl; // 2.新建 k,v 对 mymap["ooo"] = "aaa"; // 3.遍历 for(auto it = mymap.begin(); it != mymap.end(); it++){ cout << it->first << ": " << it->second << endl; } // 4.移除 k,v 对 // // 4.1 指定目标键值对位于 map 容器中的位置, // 其中,position 为迭代器,指向要删除的键值对。同时该方法会返回一个 iterator 迭代器,其指向的是删除键值对之后的那个键值对。 // iterator erase (const_iterator position); // // 4.2 指定目标键值对的键 // //删除 map 容器中键为 k 的键值对。由于 map 容器中每个键值对的键都是独一无二的,因此使用该语法格式的 erase() 方法,其返回值最大为 1。 // size_type erase (const key_type& k); // // 4.3 删除 map 容器中位于 [first,last) 区域内的所有键值对 // iterator erase (const_iterator first, const_iterator last); mymap.erase("ooo"); // 5. 查找 auto it = mymap.find("house"); cout << it->first << " " << it->second << endl; // house maison
https://iowiki.com/cpp_standard_library/cpp_unordered_set_find.html
unordered_set