C++中set库用法

C++中set库用法

set是一个容器,和其他容器的区别是vector封装数组,list封装了链表,map和set封装了二叉树等。

insert(key_value); 将key_value插入到set中
inset(first,second);将定位器first到second之间的元素插入到set中void.
begin()    ,返回set容器的第一个元素地址
end()     ,返回位于set容器最后一个元素之后的一个迭代器
clear()    ,删除set容器中的所有的元素
empty()    ,判断set容器是否为空
max_size()   ,返回set容器可以包含的元素最大个数
size()      ,返回当前set容器中的元素个数
rbegin     ,将容器内元素反转,再begin()
rend()     ,将容器内元素反转,再end()

#include <iostream>
#include <set>

using namespace std;

int main()
{
	set<int> s;
	s.insert(1);
	s.insert(2);
	s.insert(3);
	s.insert(1);
	cout << "set 的 size 值为 :" << s.size() << endl;
	cout << "set 的 maxsize的值为 :" << s.max_size() << endl;
	cout << "set 中的第一个元素是 :" << *s.begin() << endl;
    cout << "set 中最后一个元素是 :" << *s.rbegin() << endl;
	s.clear();
	if (s.empty())
	{
		cout << "set 为空 !!!" << endl;
	}
	return 0;
}

在这里插入图片描述
count() 用来查找set中某个某个键值出现的次数。这个函数在set并不是很实用,因为一个键值在set只可能出现0或1次,这样就变成了判断某一键值是否在set出现过了。

#include <iostream>
#include <set>

using namespace std;

int main()
{
	set<int> s;
	s.insert(1);
	s.insert(2);
	s.insert(3);
	s.insert(1);
    cout << "set 中 1 出现的次数是 :" << s.count(1) << endl;
    cout << "set 中 4 出现的次数是 :" << s.count(4) << endl;
	return 0;
}

在这里插入图片描述
erase(iterator) ,删除定位器iterator指向的值
erase(first,second),删除定位器first和second之间的值
erase(key_value),删除键值key_value的值

#include <iostream>
#include <set>

using namespace std;

int main()
{
	set<int> s;
	set<int>::const_iterator iter;//提供双向迭代器的类型,它可以读取set中的Const元素
	set<int>::iterator first;//提供双向迭代器的类型,可以读取或修改set中的任何元素
	set<int>::iterator second;
	for (int i = 1; i <= 10; ++i)
	{
		s.insert(i);
	}
	//第一种删除
	s.erase(s.begin());
	//第二种删除
	first = s.begin();
	second = s.begin();
	second++;
	second++;
	s.erase(first, second);
	//第三种删除
	s.erase(8);
	cout << "删除后 set 中元素是 :";
	for (iter = s.begin(); iter != s.end(); ++iter)
	{
		cout << *iter << " ";
	}
	cout << endl;
	return 0;
}

在这里插入图片描述
find() ,返回给定值值得定位器,如果没找到则返回end()。

#include <iostream>
#include <set>

using namespace std;

int main()
{
	int a[] = { 1,2,3 };
	set<int> s(a, a + 3);
	set<int>::iterator iter;
	if ((iter = s.find(2)) != s.end())
	{
		cout << *iter << endl;
	}
	return 0;
}

在这里插入图片描述
更多用法请参考官方文档

C++ STLset是一个集合容器,其的元素是唯一的,即相同的元素只会出现一次。set是按照一定的顺序排列的,通常默认情况下是升序排列。set可以进行快速的查找、插入和删除操作,时间复杂度为O(log n)。 以下是set的常用操作: 1. 插入元素:使用insert()函数,可以插入单个元素或一组元素。 2. 删除元素:使用erase()函数,可以删除单个元素、指定位置的元素或一个范围内的元素。 3. 查找元素:使用find()函数,可以查找指定元素是否存在于set。 4. 获取set元素个数:使用size()函数。 5. 判断set是否为空:使用empty()函数。 以下是一些set的常见用法: ``` #include <iostream> #include <set> using namespace std; int main() { // 创建一个set set<int> mySet; // 插入元素 mySet.insert(3); mySet.insert(1); mySet.insert(4); mySet.insert(2); mySet.insert(5); // 遍历set的所有元素 for (auto it = mySet.begin(); it != mySet.end(); it++) { cout << *it << " "; } cout << endl; // 查找元素 if (mySet.find(4) != mySet.end()) { cout << "4 is found." << endl; } else { cout << "4 is not found." << endl; } // 删除元素 mySet.erase(4); // 遍历set的所有元素 for (auto it = mySet.begin(); it != mySet.end(); it++) { cout << *it << " "; } cout << endl; // 获取set元素个数 cout << "The size of set is " << mySet.size() << endl; // 判断set是否为空 if (mySet.empty()) { cout << "The set is empty." << endl; } else { cout << "The set is not empty." << endl; } return 0; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值