0
点赞
收藏
分享

微信扫一扫

set/multiset

耶也夜 2022-03-19 阅读 43
c++

 

        

 

    

#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;
}

 

 

  

举报

相关推荐

0 条评论