C++STL常用操作之set篇

C++STL常用操作之set篇


简介:

#include<set>

1.元素唯一

2.排序

set也是c++中经常用到的容器,set是集合。set是集合,那么当然它内部的元素就是唯一的(集合的不重复性)。并且set中的元素还是已经排好序的,set和map一样,都是以红黑树为基础的数据结构。

1.构造

set<int> s;
s.insert(3);
s.insert(2);
s.insert(4);
s.insert(1);
s.insert(1);
s.insert(1);
for (auto it = s.begin(); it != s.end(); ++it)
	cout << *it << endl;

在这里插入图片描述

我们可以看出,在构造的集合s当中一依次插入int型数据3、2、4、1、1、1后遍历输出的结果为1、2、3、4。这也说明了set确实是不允许重复元素,并且是排序好的。

2.常用函数

set<int> s;
s.insert(3);
s.insert(2);
s.insert(4);
s.insert(1);
cout << *s.begin() << endl;				//返回set的第一个元素的迭代器
cout << *(--s.end()) << endl;			//返回set最后一个元素后面一个位置的迭代器
if (s.empty())							//判断set是否为空
	cout << "is empty" << endl;
else
	cout << "is not empty" << endl;
cout << s.size() << endl;				//输出set此时的元素个数
s.clear();								//清空,删除所有元素
cout << s.size() << endl;

运行结果:

在这里插入图片描述


set<int> s;
s.insert(3);
s.insert(1);
s.insert(1);
cout << s.count(1) << endl;
cout << s.count(2) << endl;

在这里插入图片描述

count用来计数某个key值出现过的次数,由于set和map一样,都是不允许重复数据的出现,所以count的返回值只能是0或1(集合中存在或者不存在)。


set<int> s;
s.insert(3);
s.insert(2);
auto it = s.find(1);
if (it != s.end())
	cout << "YES" << endl;
else
	cout << "NO" << endl;
it = s.find(3);
if (it != s.end())
	cout << "YES" << endl;
else
	cout << "NO" << endl;

在这里插入图片描述

find函数返回需要查找元素的迭代器,如果没有则返回end()。

3.删除

#include<iostream>
#include<set>
using namespace std;
int main() {
    
    
	set<int> s;
	s.insert(3);
	s.insert(2);
	s.insert(4);
	s.insert(1);
	s.insert(1);
	for (auto it = s.begin(); it != s.end(); ++it)
		cout << *it << endl;
	cout << "**********" << endl;

	s.erase(1);						//给定key值的删除
	for (auto it = s.begin(); it != s.end(); ++it)
		cout << *it << endl;
	cout << "**********" << endl;

	s.erase(s.begin());				//给定迭代器的删除
	for (auto it = s.begin(); it != s.end(); ++it)
		cout << *it << endl;
	cout << "**********" << endl;
	
	s.erase(s.begin(), s.end());	//给定迭代器返回的删除
	for (auto it = s.begin(); it != s.end(); ++it)
		cout << *it << endl;
	cout << "**********" << endl;
	return 0;
}

在这里插入图片描述

最初我们set中的元素为1、2、3、4,删除了给定得key为1的元素后,set中元素还剩下2、3、4,删除了给定的迭代器set的第一个位置对应的元素(2)后,还剩下3、4,删除了给定迭代器范围(从头到尾)的元素后,set中不再有元素。


set常用操作

发现问题欢迎指正!

猜你喜欢

转载自blog.csdn.net/qq_45985728/article/details/112791689