栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++中申请哈希表的函数:unordered

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++中申请哈希表的函数:unordered

        在C++中,存在一种简单申请哈希表的函数:unordered_map name {{},{}}

一.对该函数的简要介绍:

1、unordered_map是存储键值对的关联式容器,其允许通过key快速的索引到与其对应的value(hashmap == value)
2、unordered_map中,键值通常用于唯一的标识元素,而映射值是一个对象,其内容与此键关联,键和映射的类型可以不同
3、在内部,unordered_map没有对进行排序,unordered_map将相同哈希值的键值对放在对应的桶中
4、unordered_map容器通过key访问单个元素比map快,但它遍历元素子集的范围和迭代方面效率较低
5、unordered_map实现了直接访问操作符(operator[])允许通过key作为参数访问value
6、unordered_map的迭代器至少是前向迭代器


二. unordered_map迭代器

成员方法功能
begin()返回指向容器中第一个键值对的正向迭代器。
end() 返回指向容器中最后一个键值对之后位置的正向迭代器。
cbegin()和 begin() 功能相同,只不过在其基础上增加了 const 属性,即该方法返回的迭代器不能用于修改容器内存储的键值对。
cend()和 end() 功能相同,只不过在其基础上,增加了 const 属性,即该方法返回的迭代器不能用于修改容器内存储的键值对。
find(key)查找以 key 为键的键值对,如果找到,则返回一个指向该键值对的正向迭代器;反之,则返回一个指向容器中最后一个键值对之后位置的迭代器(如果 end() 方法返回的迭代器)。
equal_range(key)返回一个 pair 对象,其包含 2 个迭代器,用于表明当前容器中键为 key 的键值对所在的范围。

#include 
#include 
#include 
using namespace std;
int main()
{
    //创建 umap 容器
    unordered_map umap{
        {"Python教程","http://python/"},
        {"Java教程","http://java/"},
        {"Linux教程","http://linux/"} };
    cout << "umap 存储的键值对包括:" << endl;
    //遍历输出 umap 容器中所有的键值对
    for (auto iter = umap.begin(); iter != umap.end(); ++iter) {
        cout << "<" << iter->first << ", " << iter->second << ">" << endl;
    }
    //获取指向指定键值对的前向迭代器
    unordered_map::iterator iter = umap.find("Java教程");
    cout <<"umap.find("Java教程") = " << "<" << iter->first << ", " << iter->second << ">" << endl;
    return 0;
}

下面为程序输出结果:

umap 存储的键值对包括:



umap.find("Java教程") = 

三.unordered_map使用方法:

#include 
using namespace std;
#include 

int main()
{
	unordered_map myrecipe,mypantry = { { "milk", 2.0 }, { "flour", 1.5 } };

	pair myshopping("baking powder", 0.3);
    //插入操作
	myrecipe.insert(myshopping);                        // 在表中再插入表
	myrecipe.insert(pair("eggs", 6.0)); // 
	myrecipe.insert(mypantry.begin(), mypantry.end());  // 遍历
	myrecipe.insert({ { "sugar", 0.8 }, { "salt", 0.1 } });    // 初始化表

	unordered_map mymap;

	// populating container:
	mymap["U.S."] = "Washington";
	mymap["U.K."] = "London";
	mymap["France"] = "Paris";
	mymap["Russia"] = "Moscow";
	mymap["China"] = "Beijing";
	mymap["Germany"] = "Berlin";
	mymap["Japan"] = "Tokyo";

	// erase examples:
	mymap.erase(mymap.begin());      // 用迭代器擦除
	mymap.erase("France");             // 通过检索键值来擦除
	mymap.erase(mymap.find("China"), mymap.end()); // 通过序列来擦除

	//capacity examples:
	cout << mymap.size() << endl;
	cout << mymap.empty() << endl;

	mymap.clear();
	cout << mymap.size() << endl;
	cout << mymap.empty() << endl;

	system("pause");
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529138.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号