其他分享
首页 > 其他分享> > set/multiset

set/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