multiset基础学习,可以有重复类型的多重集合容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: #include #include using namespace std;struct Student{ char *name; int year; char *addr;};void find_test(){ multiset ms; ms.
#include <set>
#include <iostream>
using namespace std;

struct Student
{
	char *name;
	int year;
	char *addr;
};



void find_test()
{
	multiset<int> ms;
	ms.insert(10);
	ms.insert(11);
	ms.insert(12);
	ms.insert(13);
	ms.insert(14);
	ms.insert(15);
	ms.insert(16);
	ms.insert(17);
	ms.insert(18);
	ms.insert(13);
	ms.insert(19);

	//find the element 13

	int v = 19;
	multiset<int>::iterator i_v = ms.find(v);

	cout<<*i_v<<endl;
	
	//equal_range search the element 13
	v = 13;
	pair<multiset<int>::iterator , multiset<int>::iterator> p = ms.equal_range(v);

	cout<<"大于等于"<<v<<"的第一个元素为(x>=k)为 "<<*p.first<<endl;
	cout<<"大于"<<v<<"的第一个元素(x>k)为 "<<*p.second<<endl;


	//打印重复键值元素13

	multiset<int>::iterator i;
	cout<<"键值为 "<< v <<"的所有元素为 ";
	for (i = p.first; i!=p.second; i++)
	{
		cout<<*i<<' ';
	}

	cout<<endl;
	cout<<endl;



}


//比较函数

struct StudentLess
{
	bool operator()(const Student &s1, const Student &s2)const
	{
		return (s1.year) < (s2.year) ;
	}
};


void other_multiset()
{
	Student stuArray[] = 
	{
		{" 李强", 21, "北京"},
		{" 月月", 23, "西安"},
		{" 大力", 21, "美国"},
		{" 小二", 22, "南非"},
		{" 小明", 23, "日本"},
	};

	//create a object of multiset
	multiset<Student, StudentLess>ms(stuArray, stuArray+5, StudentLess());

	//count
	cout<<"学生人数: "<<ms.size()<<endl<<endl;
	cout<<"年龄为21岁的学生人数"<<ms.count(stuArray[0])<<endl<<endl;

	//print all
	//multiset<Student>::iterator i, iend;//报错!!!
	//<c++ STL开发技术导引>上的代码是这么写的,vs2010报错,和下面的迭代器类型不同
	multiset<Student, StudentLess>::iterator i, iend;
	iend=ms.end();

	cout<<"姓名    " <<"年龄    "<<"地址    \n";
	for (i=ms.begin(); i!=iend; i++)
	{
		cout<<(*i).name<<"    "<<(*i).year<<"    "<<(*i).addr<<"    "<<endl;
	}

	cout<<endl;
}


int main()
{
	find_test();
	other_multiset();

	getchar();

	return 0;
}

 

 

结果:

 

 

下面链接是当时出现的问题:

http://bbs.csdn.net/topics/390724469?page=1#post-396890764


 

相关文章
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
318 5
|
存储 Java 容器
HashMap 的基本操作【集合容器知识回顾 ⑤】
本文介绍了HashMap的基本操作,包括创建对象、添加、获取、删除和替换元素、获取所有key的集合、遍历HashMap,以及如何存储自定义类型键值对,并强调了当使用自定义对象作为键时需要重写equals和hashCode方法以确保正确的行为。
HashMap 的基本操作【集合容器知识回顾 ⑤】
|
Kubernetes Linux 持续交付
docker容器学习
【10月更文挑战第1天】
175 1
|
Kubernetes 应用服务中间件 nginx
k8s学习--k8s集群使用容器镜像仓库Harbor
本文介绍了在CentOS 7.9环境下部署Harbor容器镜像仓库,并将其集成到Kubernetes集群的过程。环境中包含一台Master节点和两台Node节点,均已部署好K8s集群。首先详细讲述了在Harbor节点上安装Docker和docker-compose,接着通过下载Harbor离线安装包并配置相关参数完成Harbor的部署。随后介绍了如何通过secret和serviceaccount两种方式让Kubernetes集群使用Harbor作为镜像仓库,包括创建secret、配置节点、上传镜像以及创建Pod等步骤。最后验证了Pod能否成功从Harbor拉取镜像运行。
1604 0
|
存储 Java 容器
HashSet 的基本操作【集合容器知识回顾 ④】
本文介绍了HashSet的基本操作,包括创建和初始化、添加和删除元素、判断元素存在性、获取集合大小、遍历、求交集差集、转换为数组和其他集合类型、比较两个HashSet,以及如何将自定义对象作为HashSet的元素时重写hashCode和equals方法,最后总结了HashSet的性能特点和使用注意事项。
HashSet 的基本操作【集合容器知识回顾 ④】
|
存储 安全 Java
ArrayList的基本操作【集合容器知识回顾 ②】
这篇文章详细介绍了ArrayList的基本操作,包括创建对象、添加和删除元素、获取和更新元素、遍历、判断元素存在性、集合的空值检查、批量操作、转换为数组、截取子集合、查找元素索引、克隆拷贝、清空集合以及容量管理等,同时指出了使用ArrayList时的注意事项,如线程安全性、容量管理、删除元素的性能、遍历时的修改、空值处理和性能优化。
ArrayList的基本操作【集合容器知识回顾 ②】
|
Linux 应用服务中间件 Shell
docker学习--docker容器镜像常用命令大全(简)
本文档详细介绍了Docker中的镜像命令与容器管理命令。镜像命令部分涵盖了镜像搜索、下载、上传等操作;容器管理命令则包括了容器的创建、启动、停止、删除及日志查看等功能。通过具体示例,帮助用户更好地理解和使用Docker相关命令。
817 0
|
Java API 索引
LinkedList的基本操作【集合容器知识回顾 ③】
本文详细介绍了LinkedList的基本操作,包括初始化、添加、获取、删除、替换元素、遍历,以及LinkedList独有的队列和栈相关操作,同时指出了LinkedList在插入和删除操作方面的优势以及在随机访问元素时的性能劣势。
|
3月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
763 109