深入理解集合set:从基础概念到程序应用

深入理解集合set:从基础概念到程序应用

《挑战程序设计竞赛》巫泽俊 主译

《算法竞赛入门经典》刘汝佳 著

一、集合set是什么?应用在哪?

映射也是一个常用的容器。在数学中,映射具有特定的性质和作用。

在程序设计里,我们牢牢抓住集合的互异性,也就是说任意一个元素都不会在集合中多次出现。

C++丢弃了集合的无序性。为了实际应用便捷,在 STL 库中,set 集合创建并插入元素后,会自动按照从小到大的顺序进行排列。

因此,这个容器常用于在一堆包含重复的数或字符串等数据中,把所有不同的数据筛选出来。

下面通过一个程序来熟悉set的各种基本用法:

二、set使用

这里列举一些常用的功能和方法,包括创建(可以是正序或倒序)、插入、使用迭代器、进行输出以及删除。

这里要特别提及一下。如果对所谓的迭代器不好理解,那么可以将其看作是 C 语言的指针,这个指针指向集合中的每一个元素。并且通过这种指向元素的方式,也就是通过“迭代器”的方式,能够得到元素的值。

通过一个程序了解所有常用方法:

#include
#include
#include
using namespace std;
//声明string类型从小到大排列的集合 
set<string> s1;
//声明int型从大到小排列的集合
set<int,greater<int> > s2; //后面一定要空一格! 
int main()
{
	//向集合中插入元素 
	s1.insert("aaa");
	s1.insert("ccc");
	s1.insert("bbb");
	s1.insert("aaa");//该语句等效于没有作用 
	
	//.count()方法只可能输出0或1,因为集合有互异性 
	cout<<s1.count("aaa");//1 
	//创建一个迭代器 
	set<string>::iterator it1;
	//查找元素 
	it1=s1.find("aaa");	
	//单独输出某一个元素的方式 
	cout<<*it1<<endl;//迭代器类似于指针,读出内容时需要前面加* 
	
	//输出所有元素
	for(it1=s1.begin();it1!=s1.end();it1++){
		cout<<*it1<<" ";
	}//aaa bbb ccc,按字典顺序输出 
	cout<<endl;//换行 
	s2.insert(1);
	s2.insert(3);
	s2.insert(2);
	set<int>::iterator it2;
	for(it2=s2.begin();it2!=s2.end();it2++){
		cout<<*it2<<" ";
	} //3 2 1
	cout<<endl; 
	//删除元素 
	s2.erase(2);
	for(it2=s2.begin();it2!=s2.end();it2++){
		cout<<*it2<<" ";
	}//3 1
	return 0;
}

完整运行结果:

你可能想看:
« 上一篇
下一篇 »

相关推荐

FreeBasic:强大免费开源的64位basic编译器及应用优势

2025年05月10日

82阅读

脊柱侧弯矫正方法大盘点:运动康复、支具矫正等多种方式

2025年05月09日

85阅读

如何在winForm标题栏去掉标题文字且任务栏图标正常显示

2025年05月09日

85阅读

十一黄金周促销广告词大全,国庆购物狂欢等你来

2025年05月09日

77阅读

关闭快速编辑模式及插入模式,设置控制台指定文字颜色举例

2025年05月09日

63阅读

黄金搭档低糖高钙饮品包装及成分功效全解析,适合人群要知晓

2025年05月09日

91阅读