首页 > 其他分享 >multimap的学习

multimap的学习

时间:2023-05-26 15:33:11浏览次数:36  
标签:insert multimap string make 学习 pair example



#include <map>
#include <iostream>
using namespace std;



void test_multimap()
{
//构造 multimap 的测试数据
  multimap<string, string> example;
  example.insert(make_pair(string("A"), string("11")));
  example.insert(make_pair(string("A"), string("22")));
  example.insert(make_pair(string("A"), string("33")));

  example.insert(make_pair(string("B"), string("44")));
  example.insert(make_pair(string("B"), string("55")));
  example.insert(make_pair(string("B"), string("66")));

  example.insert(make_pair(string("C"), string("77")));
  example.insert(make_pair(string("C"), string("88")));
  example.insert(make_pair(string("C"), string("99")));

  example.insert(make_pair(string("D"), string("000")));
  example.insert(make_pair(string("D"), string("111")));
  example.insert(make_pair(string("D"), string("222")));

  example.insert(make_pair(string("F"), string("0000")));
  example.insert(make_pair(string("F"), string("1111")));
  example.insert(make_pair(string("F"), string("2222")));
  example.insert(make_pair(string("F"), string("3333")));

  std::string del_item("A");
  multimap<string, string>::size_type count = example.erase(del_item);

  std::string search_item = "C";
  multimap<string, string>::iterator iter = example.find(search_item);
  multimap<string, string>::size_type all = example.count(search_item);
//采用指定数量遍历
  for (multimap<string, string>::size_type cnt = 0; cnt < all; ++cnt, ++iter)
  {
    std::cout << iter->first << ":" << iter->second << endl;
  }

//采用一个指定范围的迭代器遍历
  search_item = "B";
  for (iter = example.lower_bound(search_item); iter != example.upper_bound(search_item); ++iter)
  {
    std::cout << iter->first << ":" << iter->second << endl;
  }

//使用成对迭代器来遍历元素
  search_item = "D";
  pair<multimap<string, string>::iterator, multimap<string, string>::iterator> pos;
  for (pos = example.equal_range(search_item); pos.first != pos.second; ++pos.first)
  {
    std::cout << pos.first->first << ":" << pos.first->second << endl;
  }

//multimap 中删除元素
  search_item = "F";
  for (iter = example.begin(); iter != example.end();)
  {
    if (iter->second == "0000" || iter->second == "2222")
    {
      std::cout << "erase " << iter->first << ":" << iter->second << endl;
      example.erase(iter++);
    }
    else
    {
      iter++;
    }
  }

//输出所有元素
  for (iter = example.begin(); iter != example.end(); ++iter)
  {
    std::cout << iter->first << ":" << iter->second << endl;
  }


//查看multimap 的帮助文件,没有看到 multimap::operator[] 的定义,所以应该不支持
  //这个访问方式,就算支持,也不好定义其返回的值,比如 map 是这样定义的
  //Type& operator[](const Key& _Key);multimap 不好定义

}

int main(int argc, char *argv[])
{
  test_multimap();
  return 0;
}




标签:insert,multimap,string,make,学习,pair,example
From: https://blog.51cto.com/u_16131207/6356834

相关文章

  • 【前端算法学习】数据结构之“栈”
    JS中最棒的数据结构:数组​ 数组是计算机科学中最常用的数据结构。我们知道,可以在数组的任意位置上删除或添加元素。然而,有时候我们还需要一种在添加或删除元素时有更多控制的数据结构。有两种数据结构类似于数组,但在添加和删除元素时更为可控。它们就是栈和队列。​ 要开始学......
  • 开源工作流WorflowCore学习之工作流简单审核
    在开源趋势下,很多开源的组件在国内,乃至全网都少有案例。为了做这个工作流翻了许多帖子和github的帖子在这里对github ZL.WorflowCoreDemo,和PizzaRestaurantWorkflow-main表示感谢,同时也感谢给博客园的帖子。本案例再利用ZL.WorflowCoreDemo中的项目直接进行新加的。关于如何......
  • 学习笔记-第08天-命令合集7
    属性:人的属性:性别,身高,体重,年龄。文件的属性:大小,用户,组,权限,创建时间。[root@localhost~]#stat/etc/hostsFile:‘/etc/hosts’Size:158 Blocks:8IOBlock:4096regularfileDevice:802h/2050d Inode:67109833Links:1Access:(0644/-rw-r--r......
  • 算法学习记录(模拟枚举贪心题单):四舍五入(未AC)
    题目链接https://ac.nowcoder.com/acm/contest/20960/1004题目分析注意当第i位为9是,此时进位就是0,但是0<5,所以就不能再用i+1进行判断了。所以对于这种情况可以再添加一个其他变量。未AC代码//主要解决问题,因为使用i+1去判断是否要进位的//逢9进位后就会变成0,那么第i+1位......
  • 算法学习 | 从几个有趣的故事说起,聊聊里面的算法
    前言提到故事我就来劲头了。一方面,我喜欢读故事、讲故事、搜集故事,另一方面,用讲故事的方式会为学习增加一些趣味性,有兴趣可以帮助坚持下去。下面要介绍的故事,有些大家应该不陌生。我之前有读到过,但是没有认真的研究过,有种熟悉的陌生感。今天分享读了的故事、研究了的解题过程、顺便......
  • 帆软学习随笔记录
    --模板>模板Web属性>填报页面设置-为该模板单独设置,添加加载结束事件(JS实现根据当前sheet隐藏参数面板)$(".fr-sheetbutton-container").click(function() //给切换sheet的按钮绑定点击事件 { vara=_g().selectedIndex; //获取当前sheet的编号(从0开始) if(a==1){ //如......
  • EF6学习笔记
    概述EntityFramework(EF)Core是轻量化、可扩展、开源和跨平台版的常用EntityFramework数据访问技术。EFCore可用作对象关系映射程序(O/RM),这可以实现以下两点:使.NET开发人员能够使用.NET对象处理数据库。无需再像通常那样编写大部分数据访问代码(SQL)。EF通过使......
  • SAT的学习和使用
    1.前端使用HTTP接口调用SAP系统,SAP如何捕捉到并且进行分析?事务代码SAT:此处的对象名称为:接口地址:http://域名:端口/sap/ztest1保存之后状态为:调用完成之后状态为: 然后点击这里进行分析 ......
  • 深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick
    深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick、TransformerEncoder等原理详细讲解1.XLNet:GeneralizedAutoregressivePretrainingforLanguageUnderstanding1.1.从AR和AE模型到XLNet模型自回归模型(AutoregressiveModel,AR),通过估计......
  • 用费曼学习法教小姐姐学习Java面向对象
    大家好,我是程序员青戈,一个被Bug耽误了才艺的程序员......