STL库中的equal_range()
equal_range根据键值,返回一对迭代器的pair对象。如果该键值在容器中存在,则pair对象中的第一个迭代器指向该键关联的第一个实例,第二个迭代器指向该键关联的最后一个实例的下一位置。如果找不到匹配的元素,则pair对象中的两个迭代器都将指向此键应该插入的位置。总之,equal_range返回迭代器位置区间 [ lower_bound, upper_bound ) 。见以下例子:
#include <iostream>
#include <map>
int main ()
{
std::multimap<char,int> my_multimap;
my_multimap.insert(std::make_pair('a',));
my_multimap.insert(std::make_pair('a',));
my_multimap.insert(std::make_pair('a',));
my_multimap.insert(std::make_pair('a',));
my_multimap.insert(std::make_pair('b',));
my_multimap.insert(std::make_pair('c',));
my_multimap.insert(std::make_pair('c',));
std::cout << my_multimap.size() << std::endl;
std::pair<std::multimap<char,int>::iterator,std::multimap<char,int>::iterator> ret;
ret=my_multimap.equal_range('a');
for(std::multimap<char,int>::iterator it=ret.first;it !=ret.second;it++){
std::cout << it->first << " => " << it->second << '\n';
}
return ;
}
输出:
a =>
a =>
a =>
a =>
从上面例子可以看出,使用了multimap是可以存储重复的键值的,所以使用equal_range开始找'a'键,发现满足条件的有4个,这时返回2个迭代器,第一个迭代器是'a':10这一组键值对,第二个迭代器是最后一个'a':40这组满足条件的键值对的后一个键值对'b':10。因此迭代打印时就会得到一堆输出。
如果没有找到满足条件的键值,那么就会返回最应该插入的位置,这时第一个迭代器和第二个迭代器是相等的。
如果是用map,那么键唯一,也就是将上述代码中的multimap被替换为map,这时下面代码所得到的结果就是'a'键对应的值10。
#include <iostream>
#include <map>
int main ()
{
std::map<char,int> my_map;
my_map.insert(std::make_pair('a',));
my_map.insert(std::make_pair('a',));
my_map.insert(std::make_pair('a',));
my_map.insert(std::make_pair('a',));
my_map.insert(std::make_pair('b',));
my_map.insert(std::make_pair('c',));
my_map.insert(std::make_pair('c',));
std::cout << my_map.size() << std::endl;
std::pair<std::map<char,int>::iterator,std::map<char,int>::iterator> ret;
ret=my_map.equal_range('a');
for(std::map<char,int>::iterator it=ret.first;it !=ret.second;it++){
std::cout << it->first << " => " << it->second << '\n';
}
return ;
}
输出:
a =>
STL库中的equal_range()的更多相关文章
- STL库中string类内存布局的探究
在STL中有着一个类就是string类,他的内存布局和存储机制究竟是怎么样的呢? 这就是建立好的string 可以看出,图中用黄色框框标注的部分就是主要区域 我们用来给string对象进行初始化的字符 ...
- 关于STL库中的max min swap
嗯... 不得不说c++中的STL库是一个神奇的东西 可以使你的代码显得更加简洁.... 今天就只讲STL中的三个鬼畜: max min swap 具体操作 ...
- c++ stl库中的set
简单说来 set(集合)里的元素 不会有相同元素(也就是说 相同的值不存 )并且 存进去会自动排序 类比sort默认排序从小到大 set排序也是 set/multiset会根据待定的排序准则,自动将 ...
- STL库中的正态分布函数
在设计抽奖一类程序中,有时会需要一种概率“有较大可能获得一个普通结果,有较小可能获得一个糟糕或极好的结果”,这就可以用正态分布函数来获得这样一个结果. STL中已经提供了一系列随机分布的函数,包括正态 ...
- C++STL 库中set容器应用
#include<iostream> #include<cstdio> #include<set> using namespace std; set<int& ...
- C++STL库中vector容器常用应用
#include<iostream> #include<vector> #include<algorithm> using namespace std; int m ...
- C++STL库中map容器常用应用
#include<iostream> #include<cstdio> #include<map> //按键值大小构成二叉搜索树 using namespace s ...
- STL库中神奇函数nth_element
用法:nth_element(数组名,数组名+第k小元素,数组名+元素个数) 这个函数主要用来将数组元素中第k小的整数排出来并在数组中就位,随时调用. 例如: ]={,,,,},k ; cin> ...
- STL 库中的陷阱----一个难以察觉的 bug
请找出下面程序的 bug? int maxProfit2(vector<int> &prices) { int local[3] = {0}; int global[3] = {0 ...
随机推荐
- 003.Delphi插件之QPlugins,菜单插件加强
相比上一篇的菜单插件,这个在创建和销毁时候,做了增强,同时做了2个菜单对应的窗口 unit MenuSvc; interface uses windows, classes, SysUtils, Gr ...
- Hive Join优化经验
大表x小表 这里可以利用mapjoin,SparkSQL中也有mapjoin或者使用广播变量能达到同样效果,此处描述HQL // 开启mapjoin并设定map表大小 set hive.auto.co ...
- Windows安装tensorflow,配置vs2013,anaconda3.4,cudn9.0,cudnn7.0和pycharm
前言 最近要开始学习深度,那么首先在电脑上安装tensorflow.但是我不知道是配置版本的问题,还是安装失误的问题,我安装了很久没有安装成功,最后重装了电脑,并且融合了所有的网上可以查到的方案才安装 ...
- Codeforces Round #622 (Div. 2) 题解和我的分析
首先下午场非常适合中国人,开心 A 三种食物有个数限制,上菜,每次上菜跟以前的样式不能一样(食物的种类及个数各不相同),且每种食物最多用一次,问最多能上几次 对a,b,c排序,然后枚举上菜种类就可以了 ...
- HDU - 1698 Just a Hook (线段树---区间修改)
题意:n个棍子,初始值全为1,给定Q个区间,分别赋值,问n个棍子的总值. 分析:lazy标记主要体现在update上. 当l <= L && R <= r时,该结点的子结点 ...
- netty权威指南学习笔记四——TCP粘包/拆包之粘包问题解决
发生了粘包,我们需要将其清晰的进行拆包处理,这里采用LineBasedFrameDecoder来解决 LineBasedFrameDecoder的工作原理是它依次遍历ByteBuf中的可读字节,判断看 ...
- 19 03 02 HTTP和https
HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法. HTTPS(Hypertext Transfer Protocol ov ...
- 073-PHP数组元素相加
<?php $arr1=array(1,2,3,4,'5','05',TRUE); //等价于 1+2+3+4+5+5+1=21 $arr2=array(1,2,'ABC',3,'hello', ...
- 吴裕雄--天生自然C++语言学习笔记:C++ Web 编程
什么是 CGI? 公共网关接口(CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的. CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下: 公共网关接 ...
- CF1209B Koala and Lights
It is a holiday season, and Koala is decorating his house with cool lights! He owns n lights, all of ...