set是STL中一种标准关联容器。

它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。

set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允许重复那么可以使用multiset。

/*  3.8.5   set 容器查找和统计*/
//  功能描述:对set容器进行查找数据和统计数据
//  函数原型:
//  1、 find(key)     查找  key  是否存在,若存在,返回该键值的元素的迭代器,如果不存在,则返回set.end();
//  2、 cout(key)     统计 key的元素个数

/*  注意事项 */
// 1、set.end()  指向set容器的最后一个元素的下一个位置的迭代器
// 2、对于 set容器而言,set.count(elem)结果要么是0,要么是1


 

/* 2022 03 28 */

/*  3.8.5   set 容器查找和统计*/
//  功能描述:对set容器进行查找数据和统计数据
//  函数原型:
//  1、 find(key)     查找  key  是否存在,若存在,返回该键值的元素的迭代器,如果不存在,则返回set.end();
//  2、 cout(key)     统计 key的元素个数

/*  注意事项 */
// 1、set.end()  指向set容器的最后一个元素的下一个位置的迭代器
// 2、对于 set容器而言,set.count(elem)结果要么是0,要么是1
#include<iostream>
#include<set>
using namespace std;
void printSet(set <int> &s)
{
	for (set<int>::iterator it = s.begin(); it != s.end(); it++)
	{

		cout << *it << "  ";
	}
	cout << endl;
}
/*  查找 */
void test01()
{
	set<int> s1;
	//  插入
	s1.insert(10);
	s1.insert(30);
	s1.insert(20);
	s1.insert(40);
	// 遍历
	printSet(s1);


	//  查找
	//set <int> ::iterator pos = s1.find(300);  //  s1.find()返回一个迭代器,使用一个迭代器接收它
	set <int> ::iterator pos = s1.find(30);
	/*if (pos != s1.end())
	{

		cout << "找到元素:  " << *pos << endl;

	}

	else
	{

		cout << "没有找到该元素" << endl;
	}
*/

//  1、 find(key)     查找  key  是否存在,若存在,返回该键值的元素的迭代器,如果不存在,则返回set.end();
	if (pos == s1.end())
	{

		cout << "没有找到该元素" << endl;
	}
	else
	{
		cout << "找到元素:  " << *pos << endl;
		
	}



}


/* 统计  */
void test02()
{
	set<int> s1;
	//  插入
	s1.insert(10);
	s1.insert(30);
	s1.insert(20);
	s1.insert(40);
	// 遍历
	printSet(s1);
	//统计30的个数
	int num = s1.count(30);
	cout << "统计30的个数:" << num << endl;



}
int main()
{

	test01();
	test02();
	system("pause");
	return 0;

}

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐