C++STL(7)-unordered_set-unordered_map-哈希-set-map有序-内建数据

与set map 比,unordered_set-unordered_map底层是哈希hash,也就是无序。
内建数据类型:比如int ,string这样。
本篇代码实例为unordered_set-unordered_map。
set,map有序参看前篇 C++-STL(6)-map-set -有序-增删改查

set -unordered_set:
1.insert  :unordered_set 输入顺序: 1、2、10、100、4、8、9,  输出顺序:9、1、10、2、4、100、8 
                                  set 输入顺序: 1、2、10、100、4、8、9,  输出顺序:1、2、10、100、4、8、9
2. lower_boundh,upper_bound: 
   无论是unordered_set还是set 都是按输出顺序查找的。

unordered_set增删改查 
 

void hashset_int()
{
	//1.定义 unordered_set<int> myset;
	//2.插入insert <key>
	//3.得到大小 int nSize = myset.size();
	//4.查找 iter=myset.find(key)   输入key 返回iter
	//5.定位 iter=lower_bound(key)  <=key 返回iter
	//  定位 iter = upper_bound(key) >=key 返回iter
	//6.删除 int n=myset.erase(key) 返1 成功;返0 不成功
	// 删除全部 mymap.clear();
	
	cout << "*********************" << endl;
	cout << "1.定义 unordered_set<int> myset;" << endl;
	unordered_set<int> myset;
	myset.insert(1);
	myset.insert(2);
	myset.insert(10);
	myset.insert(100);
	myset.insert(4);
	myset.insert(8);
	myset.insert(9);
	cout << "2.插入insert <key>" << endl;
	unordered_set<int>::iterator iter;
	for (iter = myset.begin(); iter != myset.end(); iter++)
	{
		cout << *iter << endl;
	}
	cout << "auto 类型遍历" << endl;
	for (auto iter1 = myset.begin(); iter1 != myset.end(); iter1++)
	{
		cout << *iter1 << endl;
	}

	cout << "3.得到大小 int nSize = myset.size();" << myset.size() << endl;
	cout << "4.查找 iter=myset.find(100)   " << endl;
	iter = myset.find(100);
	cout << *iter << endl;

	cout << "5.定位 iter=lower_bound(100) <=key set 返回10" << endl;
	iter = myset.lower_bound(100);
	cout << *iter << endl;
	cout << "6  定位 iter = upper_bound(10)>=key set返回" << endl;
	iter = myset.upper_bound(10);
	cout << *iter << endl;
	cout << "6.删除 int n=myset.erase(key) 返1 成功;返0 不成功" << endl;
	cout << "int n=" << myset.erase(8) << endl;
	for (auto iter1 = myset.begin(); iter1 != myset.end(); iter1++)
	{
		cout << *iter1 << endl;
	}
	cout << " 删除全部 myset.clear();" << endl;
	myset.clear();
	cout << "删除后大小 int nSize = myset.size();" << myset.size() << endl;
}

set -unordered_map:
1.insert  :unordered_map 输入顺序: a、z、b、d、f,  输出顺序:a、b、z、d、f
                                  map 输入顺序: a、z、b、d、f     输出顺序:a、b、d、f、z
 

void hashmap_int()
{
	cout<<"hashmap_int**************"<<endl;
	//1.定义 map<char, int> mymap;
	//2.插入insert pair<,>
	//3.得到大小 int nSize = mymap.size();
	//4.查找 iter=mymap.find()   输入key 返回iter
	//5.删除 int n=mymap.erase(key) 返1 成功;返0 不成功
	//6.删除全部 mymap.erase(mymap.begin(), mymap.end());
	//7.修改mymap['d']=4000;
	cout << "unordered_map 增删改查 ******" << endl;

	cout << "1定义 map<char, int> mymap;" << endl;
	cout << " 2插入insert pair<,>" << endl;
	unordered_map <char, int> mymap;
	mymap.insert(pair<char, int>('a', 300));
	mymap.insert(pair<char, int>('z', 200));
	mymap.insert(pair<char, int>('b', 300));
	mymap['d'] = 700;
	mymap.insert(unordered_map<char, int>::value_type('f', 500));
	unordered_map<char, int>::iterator iter;
	for (iter = mymap.begin(); iter != mymap.end(); iter++)
	{
		cout << iter->first << " " << iter->second << endl;
	}

	cout << " 3得到大小 int nSize = mymap.size();" << endl;
	int nSize = mymap.size();
	cout << nSize << endl;
	cout << "4.查找 iter=mymap.find(b)   输入key 返回iter" << endl;
	iter = mymap.find('b');
	cout << iter->first << " " << iter->second << endl;

	cout << "5.删除 int n=mymap.erase(key) 返1 成功;返0 不成功" << endl;
	int n = mymap.erase('b');
	cout << "删除后的返回值=" << n << endl;
	for (iter = mymap.begin(); iter != mymap.end(); iter++)
	{
		cout << iter->first << " " << iter->second << endl;
	}
	cout << "6.修改mymap['d']=4000;" << endl;
	mymap['d'] = 4000;
	cout << mymap['d'] << endl;

	cout << "7.删除全部 mymap.erase(mymap.begin(), mymap.end());" << endl;
	mymap.erase(mymap.begin(), mymap.end());
	nSize = mymap.size();
	cout << "删除全部后map的长度" << nSize << endl;
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值