std::multimap

C++——std::Map 写在前面: 有一段时间没有继续进行C++容器的学习了。这次接着C++-std::Vector 的内容继续学习。通过之前的vector的学习,我发现虽然对该容器有一个比较全面的认识,但是很多细节还是不能注意好。比如在 LeetCode-406. Queue Reconstruction by Height 这道题中使用vector的insert函数,而我之前的方法由于没有把握好erase函数的使用... 阅读详情

std::multimap

介绍

成员函数

非成员函数

介绍

// multimap 模板定义
template<class Key, class T, class Compare = std::less<Key>,
    class Allocator = std::allocator<std::pair<const Key, T>>> class multimap;
namespace pmr {
    template< class Key, class T, class Compare = std::less<Key> >
    using multimap = std::multimap<Key, T, Compare,
        std::pmr::polymorphic_allocator<std::pair<const Key, T>>>;
}
  • std::multimap 介绍摘选自 cppreference.com 中文网 std::multimap 介绍
  • multimap 是关联容器,含有键值对的已排序列表,同时容许多个元素拥有同一键,按照应用到键的比较函数 Compare 排序
  • 搜索、插入和移除操作拥有对数复杂度
  • 拥有等价键的键值对的顺序就是插入顺序,且不会更改
  • 标准库使用比较 (Compare) 概念时用等价关系确定唯一性
  • 不精确地说,如果两个对象 a 与 b 相互不比较小于对方:!comp(a, b) && !comp(b, a),那么认为它们等价

成员函数

构造析构
#include <QCoreApplication>
#include <algorithm>
#include <iostream>
#include <map>
#include <string>

auto Print(const std::string &msg, const std::multimap<int, int> &lst) {
  std::cout << msg << " : ";
  for (const auto &pa : lst) {
    std::cout << pa.first << " - " << pa.second << "\t";
  }
  std::cout << "\n";
}

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using map_int = std::multimap<int, int>;
  map_int m1; //默认构造
  Print("m1", m1);

  std::less<int> cmp;
  std::allocator<std::pair<int, int>> alloc;
  map_int m2(cmp, alloc); //设置比较器和分配器
  Print("m2", m2);
  map_int m3(alloc);
  Print("m3", m3);

  map_int m4{{1, 1}, {1, 2}, {2, 1}, {2, 2}};
  Print("m4", m4);

  map_int m5(m4.begin(), m4.end()); //迭代器初始化
  Print("m5", m5);

  map_int m6(m5); //拷贝构造初始化
  Print("m6", m6);
  map_int m7(m6, alloc);
  Print("m7", m7);

  map_int m8(std::move(m7)); //移动构造初始化
  Print("m8", m8);
  map_int m9(std::move(m8), alloc);
  Print("m9", m9);

  map_int m10{{1, 1}, {1, 2}, {2, 1}, {2, 2}}; //初始化列表
  Print("m10", m10);

  map_int m11 = m10; // 赋值运算符
  Print("m11", m11);

  // 默认析构
  return 0; // a.exec();
}

输出结果:
m1 :
m2 :
m3 :
m4 : 1 - 1 1 - 2 2 - 1 2 - 2
m5 : 1 - 1 1 - 2 2 - 1 2 - 2
m6 : 1 - 1 1 - 2 2 - 1 2 - 2
m7 : 1 - 1 1 - 2 2 - 1 2 - 2
m8 : 1 - 1 1 - 2 2 - 1 2 - 2
m9 : 1 - 1 1 - 2 2 - 1 2 - 2
m10 : 1 - 1 1 - 2 2 - 1 2 - 2
m11 : 1 - 1 1 - 2 2 - 1 2 - 2

元素访问
auto Print(const std::string &msg, const std::multimap<int, int> &lst) {
  std::cout << msg << " : ";
  for (const auto &pa : lst) {
    std::cout << pa.first << " - " << pa.second << "\t";
  }
  std::cout << "\n";
}

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using map_int = std::multimap<int, int>;
  map_int m1{{1, 1}, {1, 2}, {2, 1}, {2, 2}};
  Print("m1", m1);

  std::cout << "m1 : ";
  for (auto iter = m1.begin(); iter != m1.end(); ++iter) { // 打印 key 的元素
    if (iter->first == 1)
      std::cout << iter->first << " - " << iter->second << "\t";
  }
  std::cout << std::endl;
  return 0; // a.exec();
}

输出结果:
m1 : 1 - 1 1 - 2 2 - 1 2 - 2
m1 : 1 - 1 1 - 2

迭代器
auto Print(const std::string &msg, const std::multimap<int, int> &lst) {
  std::cout << msg << " : ";
  for (const auto &pa : lst) {
    std::cout << pa.first << " - " << pa.second << "\t";
  }
  std::cout << "\n";
}

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using map_int = std::multimap<int, int>;
  map_int m1{{1, 1}, {1, 2}, {2, 1}, {2, 2}};
  Print("m1", m1);

  map_int::iterator iter = m1.begin(); //返回指向起始的迭代器
  std::cout << "m1 : ";
  for (; iter != m1.end(); ++iter) {
    std::cout << iter->first << " - " << iter->second << "\t";
  }
  std::cout << "\n";

  map_int::const_iterator citer = m1.begin(); //返回指向起始的迭代器
  std::cout << "m1 : ";
  for (; citer != m1.end(); ++citer) {
    std::cout << citer->first << " - " << citer->second << "\t";
  }
  std::cout << "\n";

  map_int::reverse_iterator riter = m1.rbegin(); //返回指向起始的逆向迭代器
  std::cout << "m1 : ";
  for (; riter != m1.rend(); ++riter) {
    std::cout << riter->first << " - " << riter->second << "\t";
  }
  std::cout << "\n";

  map_int::const_reverse_iterator rciter =
      m1.crbegin(); //返回指向起始的逆向迭代器
  std::cout << "m1 : ";
  for (; rciter != m1.crend(); ++rciter) {
    std::cout << rciter->first << " - " << rciter->second << "\t";
  }
  std::cout << "\n";

  return 0; // a.exec();
}

输出结果:
m1 : 1 - 1 1 - 2 2 - 1 2 - 2
m1 : 1 - 1 1 - 2 2 - 1 2 - 2
m1 : 1 - 1 1 - 2 2 - 1 2 - 2
m1 : 2 - 2 2 - 1 1 - 2 1 - 1
m1 : 2 - 2 2 - 1 1 - 2 1 - 1

容量
auto Print(const std::string &msg, const std::multimap<int, int> &lst) {
  std::cout << msg << " : ";
  for (const auto &pa : lst) {
    std::cout << pa.first << " - " << pa.second << "\t";
  }
  std::cout << "\n";
}

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using map_int = std::multimap<int, int>;
  map_int m1{{1, 1}, {1, 2}, {2, 1}, {2, 2}};
  Print("m1", m1);

  //检查容器是否为空
  std::cout << std::boolalpha << "m1.empty() : " << m1.empty() << std::endl;

  std::cout << "m1.size() : " << m1.size() << std::endl; //返回容纳的元素数
  std::cout << "m1.max_size() : " << m1.max_size()
            << std::endl; //返回可容纳的最大元素数,和平台有关

  return 0; // a.exec();
}

输出结果:
m1 : 1 - 1 1 - 2 2 - 1 2 - 2
m1.empty() : false
m1.size() : 4
m1.max_size() : 461168601842738790

修改器
auto Print(const std::string &msg, const std::multimap<int, int> &lst) {
  std::cout << msg << " : ";
  for (const auto &pa : lst) {
    std::cout << pa.first << " - " << pa.second << "\t";
  }
  std::cout << "\n";
}

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using map_int = std::multimap<int, int>;
  map_int m1{{1, 1}, {1, 2}, {2, 1}, {2, 2}};
  Print("m1", m1);

  m1.clear(); //  清除内容
  Print("m1", m1);
  m1.insert(std::pair<int, int>(1, 10)); //插入元素或结点
  m1.insert({1, 10});
  Print("m1", m1);
  m1.emplace(3, 30); //原位构造元素
  m1.emplace(3, 30);
  Print("m1", m1);

  m1.emplace_hint(m1.end(), 5, 50); //使用提示原位构造元素
  m1.emplace_hint(m1.end(), 6, 60);
  m1.emplace_hint(m1.end(), 7, 70);
  Print("m1", m1);

  m1.erase(m1.begin()); //擦除元素
  Print("m1", m1);

  map_int m2;
  m2.swap(m1);
  Print("m1", m1);
  Print("m2", m2);

  return 0; // a.exec();
}

输出结果:
m1 : 1 - 1 1 - 2 2 - 1 2 - 2
m1 :
m1 : 1 - 10 1 - 10
m1 : 1 - 10 1 - 10 3 - 30 3 - 30
m1 : 1 - 10 1 - 10 3 - 30 3 - 30 5 - 50 6 - 60 7 - 70
m1 : 1 - 10 3 - 30 3 - 30 5 - 50 6 - 60 7 - 70
m1 :
m2 : 1 - 10 3 - 30 3 - 30 5 - 50 6 - 60 7 - 70

查找
auto Print(const std::string &msg, const std::multimap<int, int> &lst) {
  std::cout << msg << " : ";
  for (const auto &pa : lst) {
    std::cout << pa.first << " - " << pa.second << "\t";
  }
  std::cout << "\n";
}

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using map_int = std::multimap<int, int>;
  map_int m1{{1, 1}, {1, 2}, {2, 1}, {2, 2}};
  Print("m1", m1);

  std::cout << "m1.count(1) : " << m1.count(1)
            << std::endl; //返回匹配特定键的元素数量

  //寻找键等于 key 的的元素,若容器中有数个拥有键 key 的元素,则可能返回任意一者
  auto it = m1.find(2); //寻找带有特定键的元素
  if (it == m1.end()) {
    std::cout << "m1.find(2) : m1.end()" << std::endl;
  } else {
    std::cout << "m1.find(2) : " << it->first << " - " << it->second
              << std::endl;
  }

  //返回容器中所有拥有给定关键的元素范围。范围以二个迭代器定义,一个指向首个不小于
  // key 的元素,另一个指向首个大于 key 的元素。首个迭代器可以换用 lower_bound()
  //获得,而第二迭代器可换用 upper_bound() 获得
  std::pair<map_int::iterator, map_int::iterator> pa =
      m1.equal_range(1); //返回匹配特定键的元素范围

  std::cout << pa.first->first << " - " << pa.first->second << std::endl;
  std::cout << pa.second->first << " - " << pa.second->second << std::endl;

  map_int::iterator lit =
      m1.lower_bound(2); //返回指向首个不小于给定键的元素的迭代器
  std::cout << "m1.lower_bound(2) : " << lit->first << " - " << lit->second
            << std::endl;

  lit = m1.upper_bound(1); //返回指向首个大于给定键的元素的迭代器
  std::cout << "m1.upper_bound(1) : " << lit->first << " - " << lit->second
            << std::endl;

  return 0; // a.exec();
}

输出结果:
m1 : 1 - 1 1 - 2 2 - 1 2 - 2
m1.count(1) : 2
m1.find(2) : 2 - 1
1 - 1
2 - 1
m1.lower_bound(2) : 2 - 1
m1.upper_bound(1) : 2 - 1

非成员函数

auto Print(const std::string &msg, const std::multimap<int, int> &lst) {
  std::cout << msg << " : ";
  for (const auto &pa : lst) {
    std::cout << pa.first << " - " << pa.second << "\t";
  }
  std::cout << "\n";
}

int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);

  using map_int = std::multimap<int, int>;
  map_int m1{{1, 1}, {1, 2}, {2, 1}, {2, 2}};
  map_int m2{{1, 3}, {1, 2}, {2, 5}, {2, 2}};
  Print("m1", m1);
  Print("m2", m2);

  std::cout.setf(std::ios::boolalpha);
  std::cout << "m1 == m2 : " << (m1 == m2) << std::endl;
  std::cout << "m1 != m2 : " << (m1 != m2) << std::endl;
  std::cout << "m1 > m2 : " << (m1 > m2) << std::endl;
  std::cout << "m1 >= m2 : " << (m1 >= m2) << std::endl;
  std::cout << "m1 < m2 : " << (m1 < m2) << std::endl;
  std::cout << "m1 <= m2 : " << (m1 <= m2) << std::endl;
  std::cout.unsetf(std::ios::boolalpha);
  // c++20 废弃以上操作符重载,提供三路运算符 operator <=> ()

  std::swap(m1, m2);
  Print("m1", m1);
  Print("m2", m2);

  return 0; // a.exec();
}

输出结果:
m1 : 1 - 1 1 - 2 2 - 1 2 - 2
m2 : 1 - 3 1 - 2 2 - 5 2 - 2
m1 == m2 : false
m1 != m2 : true
m1 > m2 : false
m1 >= m2 : false
m1 < m2 : true
m1 <= m2 : true
m1 : 1 - 3 1 - 2 2 - 5 2 - 2
m2 : 1 - 1 1 - 2 2 - 1 2 - 2

起始

C++ std::map几种遍历方式(正序、倒序) C++ std::map几种遍历方式(正序、倒序) 1、map 的定义方式 2、正序遍历 map 2.1 使用 for 循环 2.2 使用 while 循环 3、倒序遍历 map 3.1 使用 for 循环 3.2 使用 while 循环 4、使用 std::greater 属性,直接定义倒序存储的 map 4.1 使用 for 循环 4.2 使用 while 循环 阅读详情

相关推荐

C++——std::Set

写在前面: 在写这篇博客之前吐个槽,其实也可不不用这么麻烦这么写博客。讲道理其实在书本上学这些知识应该挺快的。可以书上看一遍记个大概,然后做题的过程中,不断遇见各种小知识,这样分散的积累,然后一定规模后,就可以系统的整理。但是现在先花时间来做这件事,其实也可以,建立主体的框架,后面再慢慢细化丰富。也没必要想那么多,慢慢来。不管方法是什么,重要的是每天要做点事。那么这篇博客学习set容器。目前学习...

zy2317878的博客 2556

C++基础之std::map

Cartographer中要用到这里,之前都是直接用,了解不深,现在补,这里是纯搬的,手写一遍加深印象,源地址如下: 参考 std::map 容器使用详细说明_学之之博未若知之之要知之之要未若行之之实的博客-优快云博客_std::map使用 概述: Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织.

YGG12022的博客 3万+

C++(10): std::map、std::multimap与std::unordered_map

std::map、std::multimap 和 std::unordered_map 是 C++ 标准模板库(STL)中的三种关联容器,它们提供了存储键值对(pair)的方式,并允许通过键来快速检索值。这三者之间的主要区别在于它们的内部数据结构和对元素的排序方式。

tecsai的博客 2573

C++ std:map深入解析与用法指南

C++ std::map 深入解析与用法指南

weixin_74396256的博客 6844

容器库(9)-std::multimap

std::multimap是一种关联容器,包含键值对的已排序的列表。和std::map不同的是,std::multimap允许重复的key值。搜索、移除和插入操作具有对数复杂度。

Lucy_stone的博客 1350

第四十五节 C++ STL(标准模板库)-映射类std::map std::multimap std::unordered_map std::unordered_multimap

map的操作与set类似,操作可参考上一节,这里仅介绍基本操作映射类: 为key-value(键-值)对容器, 支持根据key查找value, 如根据int可查找对应的stringstd::map: 存储唯一的键, 默认从小到大排序std::mulitmap: 可存储重复的键 , 默认从小到大排序 std::unordered_map: 用散列函数排序,键唯一 std::unordered_mul...

菜鸟博客 1037

std::map和std::multimap的使用总结

Map和Multimap   Map和Multimap(下文统称Map)将key/value作为元素进行管理,逻辑上是一种键值映射关系,即数据结构中哈希表。它们可以根据key的排序规则进行自动元素排序,Multimap允许元素重复,而Map不允许。   在使用Map和Multimap之前, 必须引入头文件map #include&lt;map&gt;   在其中,map和multimap在s...

大山喵写博客的地方 1万+

基于std::multimap的TLV数据结构实现与应用

支持非默认排序:必须满足严格弱序(Strict Weak Ordering)。为明确数据结构,我们首先定义关键参数:字段类型含义Taguint16_t标识数据类型,如 0x0001 表示温度Lengthuint32_t值域字节数(网络字节序)Valuebyte[]实际数据内容,如 float 或 int具体示例中,设定如下 Tag 编码::温度(单位:摄氏度,float):湿度(百分比,uint8_t)

weixin_26854475的博客 713

std::map和std::multimap的区别和用法说明

std::map和都是 C++ 标准库中的关联容器,它们都使用键值对存储元素,并且通常基于红黑树实现,提供对键的有序访问。它们的主要区别在于键是否允许重复。std::map:不允许具有相同键的元素存在。每个键只能对应一个值。:允许具有相同键的元素存在。一个键可以对应多个值。

henry747647的专栏 953

基于PLC智能立体车库控制系统设计

摘要 本系统设计以三层立体车库为研究对象,通过对立体车库的原理分析、动作流程设计和一系列的软硬件设计,达到立体车库自动化控制的目的。系统采用可编程控制器作为立体车库控制系统的控制单元,实现该系统的工艺要求,通过程序仿真调试,完成系统的各种动作要求,达到自动控制的目的。系统设计分为总体设计、硬件设计以及软件设计。按照立体车库控制系统的控制策略进行图纸设计;重点分析工艺流程图,对立体车库控制系统进行程序编译和MCGS上位机调试,通过系统的调试和修改,达到了基本控制的要求。系统设计明确了工艺要求,确定

DX884164131的博客 3600

如何通过CAD图中的坐标来确定是哪个坐标系

地理坐标系:为球面坐标。参考平面地是椭球面,坐标单位:经纬度。以地球参考为例,坐标系就相当于整个地球,而地理坐标系就是椭球状的完整的立体地球。所以我们可以看到生活中的数据与地图是一定含有地理坐标系的,因为他是客观上来说确确实实存在的。投影坐标系:为平面坐标。参考平面地是水平面,坐标单位:米、千米等。这就相当于把地球当成一个橘子,然后一刀切开,把橘子皮平面铺开,这个过程就是地理投影的过程。严谨一点来说就是建立一个参考系统,按照对应位置把椭球体投射到平面。那坐标系统主要有那些呢?北京54。

vjmap的博客 2万+

【C++ STL】std::multimap

std::multimap容器介绍

AmiaYukiAchami的博客 206

Arduino平台软硬件原理及使用——Arduino Uno板卡的使用

Arduino Uno板卡的基本使用

洪博hopes的博客 4174

c++中std::multimap遍历

#include "iostream" #include "map" #include "utility" using namespace std; int main(){ std::multimap&lt;int,std::string&gt; m; std::cout &lt;&lt; m.size() &lt;&lt; std::endl; m.insert..

wulong710的专栏 4543

K型热电偶负电压采集难题?3种运放电路设计方案对比(含Multisim仿真)

本文针对K型热电偶在低温测量中产生的负电压采集难题,详细对比了三种运放电路设计方案,包括双电源运放反相放大、单电源仪表放大器和差分放大电路,并结合Multisim仿真数据分析了各方案的性能差异。文章还提供了PCB布局和抗干扰设计的实战技巧,帮助工程师解决热电偶信号采集中的核心挑战。

postgres8guard的博客 1019

来!简单了解一下计算机发展史!

​ 1936年,英国数学家阿兰・麦席森・图灵提出了一种抽象的计算模型——图灵机( Turing machine)。图灵机,又称图灵计算机,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。​ 图灵机是一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。

m0_57290404的博客 2906

C++ std::multimap

std::multimap template < class Key, // multimap::key_type class T, // multimap::mapped_type class Com...

weixin_30835933的博客 205

OCV/AOCV/SOCV的介绍和应用

library中的cell delay是在某个固定的PVT(operating condition)下仿真得出的。,cell的delay并不是一个固定值,而是一个随机值,遵循高斯分布或门特卡洛分布,在STA中用OCV来模拟这一『特征』。OCV全称on chip variation,用于描述不同管子间由于工艺偏差、电压降、温度变化引起的delay变化。,也用于描述工艺偏差引起的net厚度宽度的变化从而导致net的电容电阻变化。优点:设置起来比较简单粗暴,对于不那么先进的工艺可行!的影响,更贴合实际。

m0_61003348的博客 8980

FX-std::multimap

是一个强大的容器,适用于需要存储多个相同键的场景。它的主要特点是:允许重复键。元素按键排序。支持高效的查找、插入和删除操作(时间复杂度为 O(log n))。如果需要唯一键,可以使用std::map;如果需要更高效的插入和删除操作(不关心顺序),可以考虑。

weixin_50577176的博客 540

反应动力学仿真软件:Kintecus_(4).用户界面及操作指南

在 Kintecus 中,反应方程的定义非常灵活。您可以定义简单的一阶反应、复杂的多步反应以及不同类型的反应机制。

kkchenjj的博客 1182

STM32cubeMX配置FreeRTOS软件定时器

文章目录前言1.软件定时器概述一.软件定时器特性二、使用cubeMX生成软件定时器总结 前言 本文主要带大家了解什么是软件定时器,并且带大家使用cubeMX配置软件定时器。 1.软件定时器概述 一.软件定时器特性 软件定时器就是一个闹钟当时间到了就执行相对应的任务或者代码。软件定时器是基于系统滴答中断的。在FreeRTOS中我们可以设置无数个软件定时器。 指定时间:启动定时器和运行回调函数,两者的间隔被称为定时器的周期 (period)。 指定类型定时器有两种类型: 1.一次性 这类定时器启动后,它的回调函

m0_49476241的博客 6949

c++11 标准模板(STL)(std::multimap)(九)

返回用于比较键的函数。 返回用于在value_type类型的对象中比较键的函数。 按照字典顺序比较 multimap 中的值。 特化 std::swap 算法。

qq_40788199的博客 786

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

「C/C++」C++ STL容器库 之 std::multimap 键值对的集合容器

std::multimap是一个有序的关联容器,它允许存储具有相同键的多个元素。其内部实现通常基于红黑树,保证了元素按照键的顺序进行存储和检索。电话簿:相同的人可以有两个以上电话号码。文件系统:可以将多个符号链接映射到相同的物理文件。DNS服务器:可以将几个URL映射到相同的IP地址。通过std::multimap,可以高效地管理这些具有重复键的数据,实现快速的查找、插入和删除操作。

何曾参静谧的博客 1682

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

stl multimap_C ++ STL多图容器– std :: multimap

In this tutorial you will learn about stl multimap i.e., std::multimap and all functions applicable on it with some example code. 在本教程中,您将通过一些示例代码学习stl multimap,即std :: multimap及其适用的所有函数。 In previou...

culing2941的博客 539

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

c++ std::unordered_set、std::unordered_map、std::unordered_multiset、std::unordered_multimap使用笔记

是 C++ 标准库中的无序关联容器,基于哈希表实现。它们提供了快速的查找、插入和删除操作。这些容器在需要高效查找、插入和删除操作的场景中非常有用,尤其是在元素顺序不重要的情况下。

曾经也曾立志 772

C++ std::unordered_multimap

std::unordered_multimap template < class Key, // unordered_multimap::key_type class T, // unordered_multimap::mapp...

weixin_30284355的博客 439
上一篇: std::map
下一篇: std::set
无夜_
博客等级 码龄7年 2916粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值