ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

set/multiset

2022-03-19 20:31:57  阅读:192  来源: 互联网

标签:insert set end cout iterator s1 multiset


 

set和multiset的特性是可以根据元素的值自动排序   ( 默认由小到大 ),set是以红黑树为底层机制,他的查找效率很好 ,set不允许重复元素出现, multiset允许重复元素出现;

set只允许insert()操作,不支持,sort(),top()之类的 

但是支持swap(),size(),empty()

        

 

    

#include<iostream>
#include<set>

using namespace std;

//set容器的初始化
void text01()
{
	set<int>s1;//默认排序,由小到大
	s1.insert(7);
	s1.insert(6);
	s1.insert(45);
	s1.insert(63);
	s1.insert(98);
	s1.insert(100);

	for (set<int>::iterator it = s1.begin(); it != s1.end(); it++)
		cout << *it << ' ';
	cout << endl;



	//如何改变默认的排序方式

	//赋值操作
	set<int>s2;
	s2 = s1;

	//删除操作
	s1.erase(s1.begin());//按照元素删除,只是删除头节点
	s1.erase(7);//按照元素删除,删除set中的所有的元素 7
	cout << "删除头节点和删除所有的元素7后的set中的数据:::" << endl;
	for (set<int>::iterator it = s1.begin(); it != s1.end(); it++)
		cout << *it << ' ';
	cout << endl;

	return;
}

//查找
void text02()
{
	//set只有实值
	set<int>s1;
	s1.insert(7);
	s1.insert(6);
	s1.insert(45);
	s1.insert(63);
	s1.insert(98);
	s1.insert(100);

	//find(key)如果key存在就返回改键元素的迭代器,否则返回end()
	set<int>::iterator ret = s1.find(45);
	if (ret == s1.end())
		cout << "没有找到!!" << endl;
	else cout << "find it" << endl;

	//lower_bound(keyElem):::返回第一个key>=keyElem元素的迭代器
	ret = s1.lower_bound(45);
	if (ret == s1.end())
		cout << "no" << endl;
	else cout << "ret:::" << *ret << endl;


	//upper_bound(keyElem):::返回第一个keykeyElem元素的迭代器
	ret = s1.upper_bound(45);
	if (ret == s1.end())
		cout << "no" << endl;
	else cout << "ret:::" << *ret << endl;
	

	//返回容器中key与keyelem相等的上下限的两个迭代器
	pair<set<int>::iterator, set<int>::iterator> myret = s1.equal_range(6);

	if (myret.first == s1.end())
		cout << "no :::" << endl;
	else cout << "myret.first:::" <<*myret.first << endl;

	if (myret.second == s1.end())
		cout << "no :::" << endl;
	else cout << "myret.first:::" << *myret.second << endl;



}
int main()
{
	//text01();
	text02();
	return 0;
}

 

 

  

标签:insert,set,end,cout,iterator,s1,multiset
来源: https://blog.csdn.net/m0_60891676/article/details/123592732

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有