<C++>map 容器快速上手|自定义数据类型排序的避坑理解(上)

简介: <C++>map 容器快速上手|自定义数据类型排序的避坑理解

🔥前言


继 set 容器后,今天总结一下 map 容器的功能,从零到一快速掌握基本使用与常用接口。map 在STL 编程中与 vector、list、set 具有同等重要的地位,键值对的方式存储元素在查找时很是高效,那么下面正式开始 map 容器的学习之旅。


1、map 容器基本操作,从构造到查找统计

1.1、map/ multimap 基本概念

特点:


map中所有元素都是二元组pair

二元组中第一个元素为key(键),起到索引作用,第二个元素为value(值)

优点:可以根据key值快速找到value值

所有元素都会根据元素的键值自动升序排序

本质:


map/multimap属于关联式容器,底层结构是用二叉树实现

二者区别:


map不允许容器中有重复key值元素

multimap允许容器中有重复key值元素

1.2、map 赋值和构造

功能:


对map容器进行构造和赋值操作

函数原型:


map<T1, T2> mp; 默认构造函数:

map(const map &mp); 拷贝构造函数

map& operator=(const map &mp); 重载等号操作符

代码示例:

// 遍历容器
void printInfo(map<int,int>& mp)
{
  for (map<int, int>::iterator it = mp.begin(); it != mp.end(); it++) {
    cout << "key = " << it->first << " value = " << it->second << endl;
  }
  cout << endl;
}
// 构造和赋值
void test01()
{
  // 默认构造
  map<int, int> mp1;
  // 利用二元组显示创建
  mp1.insert(make_pair(1,1));
  mp1.insert(make_pair(5,2));
  mp1.insert(make_pair(4,5));
  printInfo(mp1);
  // 拷贝构造
  map<int, int> mp2(mp1);
  printInfo(mp2);
  // 赋值
  map<int, int> mp3;
  mp3 = mp2;
  printInfo(mp3);
}

1.3、map 大小和交换

功能:


统计map容器大小以及交换map容器

函数原型:


size(); 返回容器中元素的数目

empty(); 判断容器是否为空

swap(st); 交换两个集合容器

代码示例:

// 大小和交换
void test02()
{
  // 大小
  map<int, int>mp;
  mp.insert(pair<int, int>(1, 10));
  mp.insert(pair<int, int>(3, 30));
  mp.insert(pair<int, int>(2, 20));
  if (mp.empty())
  {
    cout << "m为空" << endl;
  }
  else
  {
    cout << "m的大小为: " << mp.size() << endl;
  }
  // 交换
  map<int, int>m2;
  m2.insert(pair<int, int>(4, 100));
  m2.insert(pair<int, int>(5, 200));
  m2.insert(pair<int, int>(6, 300));
  cout << "交换前" << endl;
  printInfo(mp);
  printInfo(m2);
  cout << "交换后" << endl;
  mp.swap(m2);
  printInfo(mp);
  printInfo(m2);
}
目录
相关文章
|
存储 C++
UE5 C++:自定义Http节点获取Header数据
综上,通过为UE5创建一个自定义HTTP请求类并覆盖GetResult方法,就能成功地从HTTP响应的Header数据中提取信息。在项目中使用自定义类,不仅可以方便地访问响应头数据,也可随时使用这些信息。希望这种方法可以为你的开发过程带来便利和效益。
623 35
|
C++
C++ PCL 沿着自定义的平面做横截面(直通滤波)
C++ PCL 沿着自定义的平面做横截面(直通滤波)
377 0
|
监控 Serverless 文件存储
函数计算产品使用问题之如何确保新建的实例拉取的是最新的自定义容器镜像
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
305 0
|
JavaScript 前端开发
Vue中传递自定义参数到后端、后端获取数据(使用Map接收参数)
这篇文章讲述了如何在Vue中通过Axios二次封装传递自定义参数到后端,并展示了后端如何使用Map接收这些参数,以及如何避免参数转换错误和统一接口设计的方法。
|
C++ 容器
C++中自定义结构体或类作为关联容器的键
C++中自定义结构体或类作为关联容器的键
292 0

热门文章

最新文章