C++中unordered_map和unordered_set常用操作详解

unordered_map

头文件#include<unordered_map>

unordered_map用于存放键值对,其中元素以pair形式存放。

赋值:

方法一,直接赋值

	//赋值方法一:直接赋值;
	unordered_map<string, int> mp = { {"aaa",111},{"bbb",222} };

方法二,赋值方法二:利用pair和成员函数insert

    //赋值方法二:利用pair和成员函数insert;
	pair<string, int> pr = { "ccc",333 };
	mp.insert(pr);

方法三,多个键值对可利用pair数组循环插入

    //多个键值对可利用pair数组循环插入:
	pair<string, int> pr_array[] = { {"ddd",444},{"eee",555} };
	//统计元素个数;
	int size = sizeof(pr_array)/sizeof(pr_array[0]);
	for (int i = 0; i < size; i++) {
		mp.insert(pr_array[i]);
	}

查找:

方法一:利用成员函数find;

    //利用key找value方法一:成员函数find;
    //成员函数find返回值是指向键值对的迭代器(找到),或者是指向end(未找到)
	if (mp.find("ddd") != mp.end()) {
		//说明:first指键,second指值;
		cout << mp.find("ddd")->second;
	}

方法二:利用成员函数count,只判断有没有

    //利用key找value方法二:成员函数count,只能判断有没有
	if (mp.count("eee") != 0) {
		cout << "有eee但无法返回位置";
	}

unordered_set

头文件#include<unordered_set>

unordered_set不能用于存放键值对,功能类似数组和哈希表的结合体(菜鸡言论)

赋值:

方法同上

    //直接赋值
	unordered_set<string> mt = {"aaa","bbb"};
	//利用成员函数insert
	mt.insert("ccc");

查找:

方法同上:

	//利用成员函数find
	if (mt.find("aaa") != mt.end()) {
		cout << "有aaa";
	}
	//利用key找value方法二:成员函数count
	if (mt.count("bbb") != 0) {
		cout << "有bbb";
	}

另外,还有常用成员函数clear():清空哈希表;erase(key):删除某个元素;

待补充......

爽爽怪进阶中,欢迎评论~

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
unordered_map与unordered_set有什么区别? 回答: unordered_map和unordered_set都是关联式容器,类似于对 (key-value) 的模型。它们的底层实现方式不同,unordered_map使用哈希表作为底层数据结构,而unordered_set也是使用哈希表。unordered_map和unordered_set的区别在于它们存储的类型不同,即unordered_map存储对,而unordered_set存储单个元素。此外,unordered_map和unordered_set在功能上也有一些区别。unordered_map提供了以为索引的查找功能,而unordered_set则提供了判断元素是否存在的功能。从效率上来看,unordered_map和unordered_set的增删查改操作的时间复杂度都是O(1),即常数时间。而mapset的时间复杂度为O(logN),其N是容器的元素数量。所以在对效率要求较高的情况下,选择unordered_map和unordered_set会更合适。但是,unordered_map和unordered_set相比于mapset会消耗更多的内存空间。因此,在对数据有排序或者对空间有要求的情况下,选择mapset;而对于对效率有要求的情况,选择unordered_map和unordered_set更合适。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [STL详解(十二)—— unordered_set、unordered_map的介绍及使用](https://blog.csdn.net/chenlong_cxy/article/details/122277348)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [模拟实现unordered_map和unordered_set详解C++)](https://blog.csdn.net/m0_67430750/article/details/124760725)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [unordered_set和unordered_map的使用【STL】](https://blog.csdn.net/m0_63312733/article/details/128000844)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值