首页 > 其他分享 >STL-map(ACM)

STL-map(ACM)

时间:2023-06-11 14:35:28浏览次数:40  
标签:map cout insert STL make ACM mp pair

1.不存在的元素查询时会自动生成

2.map就是一堆pair的集合,按照T1的字典序进行排列

3.可以像vector那样根据下标随时访问

重载函数

 

map<T1, T2> m; // 下标的类型,值的类型
// 按照T1的值进行字典序排序

// 下方为赋值操作
map<string, string> m;
m["AC"] = "Yee";
m["Red"] = "name";

m.insert(make_pair());
m.insert(x); x是pair类型

 

基本操作

m.insert(make_pair(x, y)) // 不常用,有就无法insert

map<string, int> m;
m.insert(make_pair("AC_Yee's score:", 2600));
for (auto x : m) {
    cout << x.first << x.second << endl;
}
// 输出结果
AC_Yee's score:2600

m.erase() // 删除不存在的地方会RE
m.count();
m.find();
upper_bound();
lower_bound();

map遍历的三种方式

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

int main() {
    unordered_map<string, int> mp;
    mp["张三"] = 20;
    mp["李四"] = 18;
    mp["王五"] = 30;

    // 方式一、迭代器
    cout << "方式一、迭代器" << endl;
    for (auto it = mp.begin(); it != mp.end(); it++) {
        cout << it -> first << " " << it -> second << endl;
    }

    // 方式二、range for C++ 11版本及以上
    cout << "\n方法二、 range for" << endl;
    for (auto it : mp) {
        cout << it.first << " " << it.second << endl;
    }

    // 方法三、 C++ 17版本及以上
    cout << "\n方法三" << endl;
    for (auto [key, val] : mp) {
        cout << key  << " " << val << endl;
    }
    
    return 0;
}

自动生成没有的元素

if (m[2] != 0) 
    cout << m[2] << endl;
// 尽管此时m[2]从未赋值过,但使用了就会新建出来m[2]

//当我要判断是否m[2]存在时
if (m.count(2) && m[2] != 0) 
    cout << m[2] << endl;

 

标签:map,cout,insert,STL,make,ACM,mp,pair
From: https://www.cnblogs.com/ACYee/p/17472915.html

相关文章

  • STL之Stack与queue的模拟实现与duque的底层结构(3千字长文详解)
    STL之Stack与queue的模拟实现与duque的底层结构设计模式的概念设计模式像是古代的兵法,是以前的人总结出来的一些在特定的情况下,某种特定的好用的方法总结STL中迭代器也是一种设计模式——==迭代器模式==STL中stack和queue的实现就是使用了一种设计模式——==适配器模式!==适......
  • STL之优先级队列(堆)的模拟实现与仿函数(8千字长文详解!)
    STL之优先级队列(堆)的模拟实现与仿函数优先级队列的概念优先队列是一种==容器适配器==,根据严格的弱排序标准,==它的第一个元素总是它所包含的元素中最大的==。本质就是一个堆!此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。......
  • STL之反向迭代器的实现
    反向迭代器的实现反向迭代器介绍反向迭代器和正向迭代器的区别就是反向迭代器的++/--是倒着走!那么反向迭代器的本质是什么?——==是一个容器适配器!==本质就是通过==封装迭代器==,来让其实现我们想要的行为!也可以通过通过复制一份正向迭代器,然后修改正向迭代器的行为,来实现反......
  • 【总结】cnmaps、maskout、salem的正确打开方式
    前言这几天在画图,需要用到白化功能,一直在搜集各位大佬的资料学习(如下)。结合自己的使用经历,给大家简单分享一下亲身体验。【自学气象人】公众号获取气象绘图——白化杂谈cnmaps,你值得拥有!python绘图|salem一招解决所有可视化中的掩膜(Mask)问题安装maskout最简单我提供一......
  • STL实践指南
    这是一篇指导您如何在Microsoft Visual Studio下学习STL并进行实践的文章。这篇文章从STL的基础知识讲起,循序渐进,逐步深入,涉及到了STL编写代码的方法、STL代码的编译和调试、命名空间(namespace)、STL中的ANSI / ISO字符串、各种不同类型的容器(container)、......
  • Cassandra 的数据存储结构——本质是SortedMap<RowKey, SortedMap<ColumnKey, ColumnV
    Cassandra的数据存储结构Cassandra的数据模型是基于列族(ColumnFamily)的四维或五维模型。它借鉴了Amazon的Dynamo和Google'sBigTable的数据结构和功能特点,采用Memtable和SSTable的方式进行存储。在Cassandra写入数据之前,需要先记录日志(CommitLog),然后数据开始写......
  • Python内置函数any()、map()组合运用案例一则
    Python内置函数any()用来测试某个可迭代对象中是否所有对象都等价于True,map()用来把一个函数映射到一个或多个可迭代对象上。问题描述:测试一个字符串中是否包含指定列表中的某个字符串作为子串,不允许使用循环结构。参考代码:......
  • BouncyCastle
    目录jar包下载修改配置文件将下载的两个jar包拷贝到%JAVA_HOME%\jre\lib\ext目录下面新建工程demo.javaSM2Util.javaSM3Util.javaSM4Key.javaSM4Util.javaSM4ModeAndPaddingEnum.java运行结果在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务参考附件内容完成SM2......
  • unordered_map卡常
    加入头文件<chrono>加入以下哈希函数:structcustom_hash{staticuint64_tsplitmix64(uint64_tx){x+=0x9e3779b97f4a7c15;x=(x^(x>>30))*0xbf58476d1ce4e5b9;x=(x^(x>>27))*0x94d049bb133111eb;returnx^(x......
  • mapper层
    AnswerMapper.xml<?xmlversion="1.0"encoding="utf-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="co......