set代码:

 #include<stdio.h>
#include<set>
using namespace std;
int main(){
set<int>m;
set<int>::iterator iter;
set<int>::iterator fir,sec;
for(int i=;i>=;i-=)m.insert(i);//set二分排序,且无重复,begin返回开始地址,值为第一个元素的值,end返回最后一个位置的地址,值等于 size的值;count计数值为0或1,iterator接口类似point;
m.insert();m.insert();m.insert();
printf("size=%d\nbegin=%d\nend=%d\ncount(14)=%d\ncount(15)=%d\n",m.size(),*m.begin(),*m.end(),m.count(),m.count());
for(iter=m.begin();iter!=m.end();iter++)printf("%d ",*iter);//!=换成<就错了;iterator为接口;
puts("");
pair<set<int>::const_iterator,set<int>::const_iterator>x;
x=m.equal_range();/*equal_range() ,返回一对定位器,分别表示*第一个大于或等于*给定关键值的元素和 *第一个大于*给定关键值的元素,
这个返回值是一个(pair)类型,如果这一对定位器中哪个返回失败,就会等于end()的值。*/
printf("%d %d\n",*x.first,*x.second);//结果为 5 7 如果x=m.equal_range(4)则结果为5 5;
m.erase(x.first,x.second);//erase(iterator) ,删除定位器iterator指向的值;里面也可为一个值;erase(a,b)删除first和second之间的值;a,b为迭代器类型; 自我感觉像free
//equal_range函数没什么用,想找的话,可以自己定义一个迭代器,然后通过下列方法找;;
for(int i=;i>=;i-=)m.insert(i);
fir=m.begin();sec=m.begin();
for(fir,sec;fir!=m.end();fir++,sec++){
if(*fir>=){ printf("%d\n",*fir);
if(*sec>)printf("%d\n",*sec);
else printf("%d\n",*(++sec));
break;
}
}
return ;
}

map代码:

 #include<cstdio>
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main(){
map<int,string>student;
map<int,string>::iterator iter;
map<int,string>::iterator fir,sec;
student.insert(pair<int,string>(,"Mike"));
student.insert(pair<int,string>(,"MiKE"));
student.insert(pair<int,string>(,"jane"));
student.insert(pair<int,string>(,"kang"));
student.insert(pair<int,string>(,"Rose"));
student[]="reder";
student[]="Red";
cout<<"数据:"<<endl;
for(iter=student.begin();iter!=student.end();iter++)cout<<iter->first<<" "<<iter->second<<endl;
cout<<"find与count的使用"<<endl;
if(student.find()!=student.end())cout<<student.find()->second<<endl;//find能定位要查找元素的位置。有一点需要注意的是查找的参数是键值!!
if(student.count())cout<<student.count()<<endl;//count只能单纯的查找元素是否存在,
iter=student.begin();
student.erase(iter);cout<<"删除首位:"<<endl;
for(iter=student.begin();iter!=student.end();iter++)cout<<iter->first<<" "<<iter->second<<endl;
student.erase();
cout<<"键值删除:"<<endl;
for(iter=student.begin();iter!=student.end();iter++)cout<<iter->first<<" "<<iter->second<<endl;
fir=student.begin();sec=student.end();
student.erase(fir,sec);//或student.clear();
cout<<"利用迭代器范围删除所有数据"<<endl;
if(student.empty())puts("all empty");
return ;
}

关于map与set的一点理解;的更多相关文章

  1. RxSwift 入坑好多天 - 终于有了一点理解

    一.前言 江湖上都在说现在就要赶紧学 swift 了,即将是 swift 的天下了.在 api 变化不大的情况下,swift 作为一门新的语言,集众家之所长,普通编码确实比 oc 要好用的多了 老早就 ...

  2. opencv笔记5:频域和空域的一点理解

    time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...

  3. 对socket的一点理解笔记

    需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...

  4. iOS 的一点理解(一) 代理delegate

    做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...

  5. 关于web开发的一点理解

    对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端   服务端通过解析报文并处理报文最后把处理的结果 ...

  6. angular.js的一点理解

    对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...

  7. rt-thread中动态内存分配之小内存管理模块方法的一点理解

    @2019-01-18 [小记] rt-thread中动态内存分配之小内存管理模块方法的一点理解 > 内存初始化后的布局示意 lfree指向内存空闲区首地址 /** * @ingroup Sys ...

  8. rt-thread中软件定时器组件超时界限的一点理解

    @2019-01-15 [小记] 对 rt-thread 中的软件定时器组件中超时界限的一点理解 rt_thread_timer_entry(void *parameter)函数中if ((next_ ...

  9. mycat的schema.xml的个人的一点理解

    官方文档里讲的详细的部分的我就不再赘述了,我只是谈谈我自己的理解 刚开始接触mycat,最重要的几个配置文件有server.xml,schema.xml,还有个rule.xml配置文件 具体都是干啥用 ...

随机推荐

  1. android jni (5)——Field & Method --> Accessing Mehtod

    在java编程语言中有非静态成员函数和静态成员函数,JNI允许我们访问到java中的成员函数,然后再jni中调用,这里我就来举例说明在jni中是如何做到的. 我们先在java中定义2个成员函数,一个非 ...

  2. CBitmap,HBitmap,Bitmap区别及联系

    加载一位图,可以使用LoadImage: HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int ...

  3. 为项目编写Readme.MD文件

    了解一个项目,恐怕首先都是通过其Readme文件了解信息.如果你以为Readme文件都是随便写写的那你就错了.github,oschina git gitcafe的代码托管平台上的项目的Readme. ...

  4. java第二周学习日记

    day01 1.抽象类 (1)抽象类的应用场景: 我们在描述一类事物的时候,发现该种事物确实存在着某种行为,但是这种行为目前不是具体的,那么我们可以抽取这种行为的声明,但是不去实现该种行为,这时候这种 ...

  5. (转载)js获取JqueryString方法小结

    一.<script>urlinfo=window.location.href; //获取当前页面的urllen=urlinfo.length;//获取url的长度offset=urlinf ...

  6. a标签伪类的顺序

    在一次开发项目中,我用a链接来做效果,测试的时候发现,a:hover被点击后的效果就不再了!我百度才知道,原来在css写a链接也是有顺序之分的. 顺序应该是: a:link a标签还未被访问的状态: ...

  7. PHP学习笔记二十六【类的重载】

    <?php //重载: //函数名一样,通过函数的参数个数或者是参数类型不同,达到调用同一个函数名 Class A{ // public function test1(){ // echo &q ...

  8. oracle 两个时间相减

    oracle 两个时间相减默认的是天数 oracle 两个时间相减默认的是天数*24 为相差的小时数 oracle 两个时间相减默认的是天数*24*60 为相差的分钟数 oracle 两个时间相减默认 ...

  9. 常用网站--前端开发类+网页设计类+平面素材类+flash类

    前端开发类 animate CSS 前端开发网 我爱CSS 大家网 W3School jQuery开发技术详解教程视频 jQuery中文社区 jQueryChina 网页设计类 禅意花园 CSS Do ...

  10. C++服务器设计(四):超时管理机制设计

    前四章介绍了系统层的设计,从这一章开始进入服务层的设计. 连接断开 在常见的服务器场景中,客户端断开连接的方式为被动关闭.即作为客户端请求完服务器的服务后,选择主动关闭同服务器的连接.在服务器的角度看 ...