c++ set集合的使用方法详解

c++ set集合的使用方法详解set集合是c++stl库中自带的一个容器,set具有以下两个特点:1、set中的元素都是排好序的2、set集合中没有重复的元素常用操作:begin()  返回set容器的第一个元素的地址end()    返回set容器的最后一个元素地址clear()  删除set容器中的所有的元素empty()   判断set容器是否为空max_size()

大家好,又见面了,我是你们的朋友全栈君。

set集合是c++ stl库中自带的一个容器,set具有以下两个特点:

1、set中的元素都是排好序的

2、set集合中没有重复的元素

常用操作:

begin()    返回set容器的第一个元素的地址

end()      返回set容器的最后一个元素地址

clear()    删除set容器中的所有的元素

empty()     判断set容器是否为空

max_size()   返回set容器可能包含的元素最大个数

size()      返回当前set容器中的元素个数

erase(it) 删除迭代器指针it处元素

insert(a) 插入某个元素

#include<stdio.h>
#include<set>
using namespace std;
int main()
{
	set<int>s;
	s.insert(3); 
	s.insert(1);
	s.insert(2);
	s.insert(1);
	set<int>::iterator it;            
	for(it=s.begin();it!=s.end();it++)  //使用迭代器进行遍历 
	{
		printf("%d\n",*it);
	}
	return 0;
}
//输出结果 : 1 2 3     一共插入了4个数,但是集合中只有3个数并且是有序的,可见之前说过的set集合的两个特点,有序和不重复。 

当set集合中的元素为结构体时,该结构体必须实现运算符‘<’的重载

#include<stdio.h>
#include<set>
#include<string>
using namespace std;
struct People
{
	string name;
	int age;
	bool operator <(const People p) const  //运算符重载 
	{
		return age<p.age;       //按照年龄由小到大进行排序 
	}
}; 
int main()
{	
	set<People>s;
	s.insert((People){"张三",14});
	s.insert((People){"李四",16});
	s.insert((People){"王二麻子",10});
	set<People>::iterator it;            
	for(it=s.begin();it!=s.end();it++)  //使用迭代器进行遍历 
	{
		printf("姓名:%s 年龄:%d\n",(*it).name.c_str(),(*it).age);
	}
	return 0;
}
/*
输出结果
 姓名:王二麻子 年龄:10
姓名:张三 年龄:14
姓名:李四 年龄:16 
*/ 

可以看到结果是按照年龄由小到大的顺序排列。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138538.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微信支付与支付宝钱包的竞争分析

    微信支付与支付宝钱包的竞争分析微信支付与支付宝钱包的竞争分析NO1:2013年8月,微信5.0上线,其中附加了一个功能叫做微信支付,当时的微信用户已经超过了4亿,活跃用户1.94亿,估计不少人在看微信支付同支付老大哥支付包的大战。说起微信支付和支付宝的大战,先来说说他们背景,微信支付是社交软件巨头腾讯公司旗下的微信中的附加功能,而支付宝是电商巨头阿里巴巴旗下的支付理财软件。两家都有超过2万的顶级互联网员工,兵强马壮…

    2022年5月14日
    61
  • 关于extreme sports的作文_grantable

    关于extreme sports的作文_grantable尊敬的前辈,    大家好!    我在网上看到了关于extremedb的文章,在实际操作时碰到了一些问题,想和大家探讨一下。1、我先安装了extremedb_3.1_win32_sql_log_eval_1B.EXE,2、然后用安装目录(C:/McObject/eXtremeDB_SQL_LOG/win32/host/bin)下的mcocomp.exe对test.mco文件进行了

    2022年10月14日
    5
  • js匿名函数和命名函数_javascript中的函数

    js匿名函数和命名函数_javascript中的函数匿名函数里的对象,跟定义匿名函数页面的上下文有关,而与调用匿名函数的页面无关。很拗口。举例说明://在某个“容器”页面functionshowWorkSpace(callback,h){varheight=500;callback(“map_workspace”,height);}//在该“容器”页面中的某个iframe页面parent.showWorkSpa

    2022年9月1日
    4
  • java jasypt_Jasypt「建议收藏」

    java jasypt_Jasypt「建议收藏」软件简介Jasypt这个Java类包为开发人员提供一种简单的方式来为项目增加加密功能,包括:密码Digest认证,文本和对象加密,集成hibernate,SpringSecurity(Acegi)来增强密码管理。Jasypt开发团队推出了Java加密工具Jasypt1.4,它可与SpringFramework、Hibernate和AcegiSecurity集成。与项目有关的一位开发者表示,Ja…

    2022年9月26日
    3
  • a标签属性 rel=noopener noreferrer

    a标签属性 rel=noopener noreferrer

    2021年11月6日
    60
  • mysql函数索引_MySQL 函数索引 (Functional indexes)

    mysql函数索引_MySQL 函数索引 (Functional indexes)函数索引示例:CREATETABLEt1(col1INT,col2INT,INDEXfunc_index((ABS(col1))));CREATEINDEXidx1ONt1((col1+col2));CREATEINDEXidx2ONt1((col1+col2),(col1-col2),col1);ALTERTABLEt1ADDINDE…

    2025年5月28日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号