#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

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

  1. multiset多重集合容器(常用的使用方法总结)

    关于C++STL中multiset集合容器的学习,看别人的代码一百遍,不如自己动手写一遍. multiset多重集合容器和set集合容器的使用方法大多相同,不同的是multiset多重集合容器允许重复 ...

  2. C++STL之multiset多重集合容器

    multiset多重集合容器 multiset与set一样, 也是使用红黑树来组织元素数据的, 唯一不同的是, multiset允许重复的元素键值插入, 而set则不允许. multiset也需要声明 ...

  3. multiset多重集合容器

    跟set集合容器相比,multiset多重集合容器也使用红黑树组织元素,仅仅是multiset多重集合容器同意将反复的元素键值插入.元素的搜索依旧具有对数级的算法时间复杂度,find和equal_ra ...

  4. C语言基础学习基本数据类型-Char类型

    char类型 char类型用于储存字母和标点之类的字符.但是在技术实现上char却是整数类型.为了处理字符,计算机使用一种数字编码,用特定的整数表示特定的字符.字符变量输入输出用%c符号.定义语法如下 ...

  5. C语言基础学习基本数据类型-int类型与int变量

    int类型与int变量 针对不同的用途,C语言提供了多种整数类型.各种整数类型的区别在于所提供数值的范围,以及数值是否可以取负值. 在之前的实例中你已经看到过,int关键字用于声明整型变量. int类 ...

  6. JDBC基础学习(三)—处理BLOB类型数据

    一.BLOB类型介绍      在MySQL中,BLOB是一个二进制的大型对象,可以存储大量数据的容器,它能容纳不同大小的数据.      在MySQL中有四种BLOB类型.          实际使 ...

  7. c语言基础学习09_关于复合类型的复习

    =============================================================================struct A{ char array[10 ...

  8. C++基础学习1: C++布尔类型

    布尔类型(bool)是C++新增的一种基本数据类型.在标准的C语言中并未定义bool类型,如果需要使用bool类型, 程序员可以通过宏定义来自定义一个bool类型,定义语句如下: #define bo ...

  9. python 的基础 学习 第八天数据类型的补充 ,集合和深浅copy

    1,数据类型的补充: 元组()tuple,如果只有元素,并且没有逗号,此元素是什么数据类型,该表达式就是什么数据类型. tu = ('rwr') print(tu,type(tu)) tu = ('r ...

随机推荐

  1. FFmpeg源代码简单分析:avformat_close_input()

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  2. android布局##TableLayout和FrameLayout-android学习之旅(十五)

    TableLayout 表格布局 tablelayout简介 表格布局有TableLayout代表,但是它的本质定义仍然是线性管理器.表格布局采用行和列来管理UI,但是不需要明确的定义多少行,多少列, ...

  3. ios7内购、Game Center 实现 in-App Purchases & Game Center

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=514 昨天使用ios7SDK b ...

  4. android开发之broadcast学习笔记

    android中的广播用的太多了,今天稍微总结一下. 按注册方式分为两种: 1.静态注册广播: 静态注册广播就是在androidManifest.xml文件中注册广播,假设我们要实现这样一个效果,在一 ...

  5. Android开发学习之路--传感器之初体验

    说到传感器,还是有很多的,有加速度啊,光照啊,磁传感器等等.当然android手机之所以称为智能手机,少不了这几款传感器的功劳了.下面就学习下了,这里主要学习光照,加速度和磁. 新建工程emSenso ...

  6. Android初级教程XUtils实现“断点续传”下载

    对于"断电续传",在任何开发中都显得很重要.xutils对此封装的很好了,可以很简单的实现很多下载功能,其中就包括"断点续传" 主要代码如下: package ...

  7. Hessian探究(一)Hessian与Spring结合

    上一篇博客Hessian探究(一)Hessian入门示例我们初步简单的介绍了一下Hessian的使用入门示例,由于Spring现在使用的实在是太广泛了,接下来我们介绍一下Hessian和Spring一 ...

  8. gcov辅助脚本

    gcov辅助脚本(金庆的专栏)代码覆盖测试查看结果时,需要进入代码所在目录,调用gcov,然后vi查看.因为代码目录结构复杂,进出子目录太麻烦,所以用以下脚本直接生成与查看.一般是用TSVN列出有更改 ...

  9. 寻找第k元

    要求:给定一个数组array[n],寻找大小排在第k的元素 思路一:最直接的思路就是先排序,这样可以直接通过数组下标找到第k大的元素,最好的快速排序时间复杂度为O(nlogn). 思路二:我们可以在快 ...

  10. TCP模型及其重点协议总结

    概述 TCP/IP协议族,作为最早的协议模型(后来OSI七层也是在该基础上细分而来),每层都有一些重点的协议,面试时也会被询问,快要找工作,得做一些总结了 [1]TCP4层协议模型概述 [2]各层重点 ...