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

#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

 

时间: 2024-10-31 11:12:28

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

【android基础】之关于重复类型事件的处理方法

1. 在xml文件中配置android:onClick="方法名"   2. 在所在activity中定义onClick方法   看下具体的实现: 1.main.xml文件   <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"     and

Javascript基础学习笔记(菜鸟必看篇)_基础知识

什么是变量? 变量是用于存储信息的容器 变量的声明 语法: var 变量名 变量名 = 值; 变量要先声明再赋值 变量可以重复赋值 变量的命名规则 变量必须以字母开头: 变量也能以$和_符号开头(不过我们不推荐这么做): 变量名称对大小写敏感(a和A是不同的变量). 语句 语句以一个分号结尾:如果省略分号,则由解析器确定语句的结尾. 有个好的编码习惯,都要以 ; 结尾 数据类型 在JavaScript中,一段信息就是一个值(value).值有不同的类型,大家最熟悉的类型是数字.字符串(strin

值得收藏的asp.net基础学习笔记_实用技巧

值得收藏的asp.net基础学习笔记,分享给大家. 1.概论 浏览器-服务器 B/S 浏览的  浏览器和服务器之间的交互,形成上网B/S模式 对于HTML传到服务器  交给服务器软件(IIS)  服务器软件直接读取静态页面代码,然后返回浏览器 对于ASPX传达服务器  交给服务器软件(IIS)   IIS发现自己处理不了aspx的文件,就去映射表根据后缀名里找到响应的处理程序(isapi,服务器扩展程序) 问题:IIS如何调用可扩展程序? 答:可扩展程序首先就是按照IIS提供的借口实现代码,所以

C#的基础学习

这是一篇C#的基础学习文章,高手就可以跳过了, 1.基本类型: 基本与C\C++相同 decimal decimal是一个128位的高精度浮点数. bool 注意的是bool类型只有true和faulse两个可取值,在C#中,不能将bool值强制转换为整形值.如,将true转换为1或将1,0转换为bool值都是不行的. Parse和TryParse转换字符串 基本的数字类型包含Parse和TryParse的方法,可将数字字符串类型转换为指定的数字类型,例如 int iParse = Int32.

IOS基础学习UIButton使用详解

  UIButton按钮是IOS开发中最常用的控件,作为IOS基础学习教程知识 ,初学者需要了解其基本定义和常用设置,以便在开发在熟练运用. 第一.UIButton的定义 UIButton *button=[[UIButton buttonWithType:(UIButtonType); 能够定义的button类型有以下6种, typedef enum { UIButtonTypeCustom = 0, 自定义风格 UIButtonTypeRoundedRect, 圆角矩形 UIButtonTy

怎样从零基础学习EXCEL?

  怎样从零基础学习EXCEL?          后来工作会对你的数据处理能力提出要求(除非你懒,错过了那么好的学习机会).可能开始的时候,你会发现一个函数能自动计算求和(sum),能算平均数(average),你就很开心了.接下来你会发现经常要从一个表里面寻找另一个表里面的内容(vlookup就很有用),有时候很多要做条件(if函数就很有用). 其实到这里就能解决大概80%的工作问题了.就几个函数不会很难吧,特别是当你发现以前要好久的时间,现在很快就完成了.至于以后的深入学习就看你的工作是否

Linux shell脚本基础学习详细介绍(完整版)

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Linux 脚本编写基础 ◆1.1 语法基本介绍1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可

scanner-Java基础学习中Scanner类nextInt方法问题

问题描述 Java基础学习中Scanner类nextInt方法问题 import java.util.*; public class Practice { public static String prompt = "How are you? "; public static void main(String[] args) { Scanner console = new Scanner(System.in); System.out.print(prompt); //int year=

拒绝从入门到放弃_《鸟哥的 Linux 私房菜 — 基础学习篇(第三版)》必读目录

目录 目录 前言 关于这本书 必看知识点 最后 前言 相信部分刚进入这个行业的新同学会对一个问题感到疑惑,为什么从培训学校出来的学员不被欢迎? 这里记录下一些我个人的看法(博主也曾有面试新员工的经历):说到底还是一个学习能力的问题.就这一点,从我的经历看来(曾到多家企业培训新人),培训出身的技术人员大体而言确实没有科班出身的学得更快准狠一些.学习能力这个东西其实比较虚,它并没有一个直观的考量方式,所以企业一般都会简单粗暴的使用学历.专业.项目经验来衡量.这之间反映了你的计算机知识框架是否完善.基