set容器

set容器

码农世界 2024-05-23 前端 78 次浏览 0个评论

set基本概念 构造和赋值

所有元素会在插入时自动排序

#include
#include
#include
#include
#include
#include
const int N = 2e5 + 10, M = 1e3 + 10;
using namespace std;
void printSet(set& s)
{
	for (set::iterator it = s.begin(); it != s.end(); it++)
	{
		cout << *it << ' ';
	}
	cout << endl;
}
void test01()
{
	sets1;
	//插入数据 只有insert方式
	s1.insert(10);
	s1.insert(40);
	s1.insert(30);
	s1.insert(20);
	s1.insert(30);
	printSet(s1);//所有元素自动被排序,不允许插入重复的值
	//拷贝构造
	sets2(s1);
	printSet(s2);
	//赋值
	sets3;
	s3 = s2;
	printSet(s3);
}
int main()
{
	std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	test01();
	return 0;
}

set大小和交换

#include
#include
#include
#include
#include
#include
const int N = 2e5 + 10, M = 1e3 + 10;
using namespace std;
void printSet(set& s)
{
	for (set::iterator it = s.begin(); it != s.end(); it++)
	{
		cout << *it << ' ';
	}
	cout << endl;
}
void test01()
{
	sets1;
	s1.insert(10);
	s1.insert(20);
	s1.insert(30);
	s1.insert(40);
	printSet(s1);
	//判断是否为空
	if (s1.empty())
	{
		cout << "空" << endl;
	}
	else cout << "not empty" << endl;
	cout << "s1大小" << s1.size();
}
void test02()
{
	sets1;
	s1.insert(10);
	s1.insert(20);
	s1.insert(30);
	s1.insert(40);
	sets2;
	s2.insert(100);
	s2.insert(200);
	s2.insert(300);
	s2.insert(400);
	cout << "交换前"< 

set插入和删除

#include
#include
#include
#include
#include
#include
const int N = 2e5 + 10, M = 1e3 + 10;
using namespace std;
void printSet(set& s)
{
	for (set::iterator it = s.begin(); it != s.end(); it++)
	{
		cout << *it << ' ';
	}
	cout << endl;
}
void test01()
{
	sets1;
	s1.insert(10);
	s1.insert(20);
	s1.insert(30);
	s1.insert(40);
	printSet(s1);
	//删除
	s1.erase(s1.begin());
	printSet(s1);
	//删除重载版本
	s1.erase(30);
	printSet(s1);
	//清空
	s1.erase(s1.begin(), s1.end());//==s1.clear()
	printSet(s1);
}
void test02()
{
	
}
int main()
{
	std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	test01();
	return 0;
}

set查找和统计

#include
#include
#include
#include
#include
#include
const int N = 2e5 + 10, M = 1e3 + 10;
using namespace std;
void printSet(set& s)
{
	for (set::iterator it = s.begin(); it != s.end(); it++)
	{
		cout << *it << ' ';
	}
	cout << endl;
}
void test01()
{
	sets1;
	s1.insert(10);
	s1.insert(20);
	s1.insert(30);
	s1.insert(40);
	//printSet(s1);
	set::iterator pos = s1.find(100);
	if (pos != s1.end())
	{
		cout << "ok:" << *pos<s1;
	s1.insert(10);
	s1.insert(20);
	s1.insert(30);
	s1.insert(40);
	s1.insert(30);
	s1.insert(30);
	int num = s1.count(30);//统计30的个数 对于set而言 统计结果要么是0要么是1
	cout << "num:" << num;
}
int main()
{
	std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	test02();
	return 0;
}

set和multiset的区别

multiset可以插入重复的值

转载请注明来自码农世界,本文标题:《set容器》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,78人围观)参与讨论

还没有评论,来说两句吧...

Top