C++中set和map的基本用法


前言提示:以下是本篇文章正文内容,下面案例可供参考`


一、C++中的哈希结构简介

C++中有三种常见的哈希结构:

1、数组

2、set

C++中的set结构有三种:
std::set

1、底层实现为红黑树
2、集合里的元素是有序并且无重复
3、查找和增删的效率都为对数级

std::multiset

1、底层实现为红黑树
2、集合里的元素有序并且可以重复
3、查找和增删的效率都为对数级

std::unordered_set

1、底层实现是哈希表
2、集合里的元素无序
3、查找和增删的效率最高(不要求元素有序的情况下,建议使用)

关于set的基本用法

/*
set<int> s;       //初始化一个数据类型为int的集合t(第一种set)s
s.insert(n);      //向集中添加一个元素n
s.insert({2, 3}); // 插入多个元素
s.find(n)         //查询n是否在集合s中,如果在集合s中返回对应元素的迭代器,元素不存在返回end()迭代器
s.erase(n)        //从集合中移出一个元素
s.count(n)        //因为std::set中元素无重复,因此某一个元素在集合中出现的次数只有0和1
s.size()          //统计集合s的大小
*/


#include<iostream>
#include<set>
using namespace std;
int main()
{
	set<int> s;
	s.insert({3,5,6});
	//对set进行遍历输出
	for (auto it = s.begin(); it != s.end(); ++it)
	 {
    	cout << *it << endl;
	}
    //查找元素是否存在
	if(s.find(5)!=s.end())
	{
		cout<<"find 5"<<endl;
	}
	else
	{
		cout<<"not find!"<<endl; 
	}
	s.erase(2);
	cout<<"2在集合s中出现的次数: "<<s.count(2)<<endl;
	cout<<"集合s的大小是: "<<s.size()<<endl;
	return 0;
}

3、map

map与set不同的是:map里的数据结构为<key,value>
如果我们既要存储元素值又要存储下标考虑使用map
C++中的map结构有三种:
std::map

1、底层实现为红黑树
2、集合里的元素是有序并且无重复
3、查找和增删的效率都为对数级

std::multimap

1、底层实现为红黑树
2、集合里的元素有序并且可以重复
3、查找和增删的效率都为对数级

std::unordered_map

1、底层实现是哈希表
2、集合里的元素无序
3、查找和增删的效率最高(不要求元素有序的情况下,建议使用)

关于map的基本用法

/*
mapt<char,int> mymap;     //初始化一个map
mymap.insert(pair('c',3));      //使用insert方法插入键值对
mymap['c'] = 3;           // 插入键值对
mymap.find(n)             //查询n是否在集合s中,如果在集合s中返回对应元素的迭代器,元素不存在返回end()迭代器
mymap.erase(n)            //移出键值对
mymap.count(n)            //因为std::m ap中元素无重复,因此某一个元素在集合中出现的次数只有0和1
map.size()                //统计大小
*/


#include<iostream>
#include<map>
using namespace std;
int main()
{
	map<char,int> mymap;
	mymap['a'] = 1;
	mymap['b'] = 2;
	//对map进行遍历输出
	for (auto pair = mymap.begin(); pair != mymap.end(); ++pair)
	 {
    	cout<<"key: "<<pair->first<<","<<"value: "<<pair->second<<endl;
	}
   //查看键值是否存在
   auto it =  mymap.find('a');
   if(it!=mymap.end())
   {
   		cout<<"value: "<<it->second<<endl;
   }
     //删除键
	mymap.erase('a');  
	                  
	cout<<"'b'在map中出现的次数: "<<mymap.count('b')<<endl;
	cout<<"map的大小是: "<<mymap.size()<<endl;

}

总结

提示:这里介绍了C++中set和map的基本使用方法:

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值