C++ STL set容器常用用法 set 容器查找和统计

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;

}

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Love coldplay

你的鼓励,将让我持续更新

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值