C++17下的map提供了如下接口:

  • emplace( Args&&... args ),原位构造元素,将参数 args...转发给构造函数并插入生成元素
  • emplace_hint( const_iterator hint, Args&&... args ) 原位构造元素,插入新元素到容器中尽可能接近于恰在 hint 前的位置
  • try_emplace(const key_type& k, Args&&... args)
    try_emplace(key_type&& k, Args&&... args)
    try_emplace(const_iterator hint, const key_type& k, Args&&... args)
    try_emplace(const_iterator hint, key_type&& k, Args&&... args)
     若键不存在则原位插入,若键存在则不做任何事
  • extract( const_iterator position )

    extract( const key_type& x )    从另一容器释出结点

  • merge(std::map<Key, T, C2, Allocator>& source)
    merge(std::map<Key, T, C2, Allocator>&& source)
    merge(std::multimap<Key, T, C2, Allocator>& source)
    merge(std::multimap<Key, T, C2, Allocator>&& source)
    从另一容器接合结点

  • insert_or_assign(const key_type& k, M&& obj)
    insert_or_assign(key_type&& k, M&& obj)
    insert_or_assign(const_iterator hint, const key_type& k, M&& obj)
    insert_or_assign(const_iterator hint, key_type&& k, M&& obj)
    插入元素,或若关键已存在则赋值给当前元素

例子如下:

map<int, int> myMap;
auto[iter, bSuccess] = myMap.emplace(1,2);
auto[newIter, bNewSuccess] = myMap.emplace(1, 2);
myMap.emplace_hint(myMap.begin(), 2, 3);

上面的第二句等同于std:make_pair<int, int>(1, 2),即等同于将键为1,值为2的键值对插入myMap ,等同于如下代码:

map<int, int> myMap{std::make_pair(1,2)};

map<int, int> myMap{{1,2}};
或
map<int, int> myMap;
myMap[1] = 2;

auto[iter, bSuccess] 中的iter表示插入键值对的位置,bSuccess表示是否插入成功,此时bSuccess应该为true。由于第2句代码已经插入了1,2,则第3句代码bNewSuccess应为false。

emplace_hint很简单,即使提供一个插入的迭代器,在指定的迭代器位置插入。

另外下面链接也很不错:STL常用操作:map_zhuikefeng的博客-CSDN博客

C++17下map不常用的接口函数汇总相关推荐

  1. hive-内置函数(常用内置函数汇总)

    show functions; #查看所有内置函数,共271个 show function sum; #查看sum函数的描述信息 show function extended sum; #查看内置函数 ...

  2. MATLAB cvx工具箱中常用的替换函数汇总,解决表达式报错问题

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.基础函数 二.进阶函数 1.inv_pos()-正数的倒数 2.norm_inv_pos(x, p)-逆范数函数 ...

  3. Python常用内置类和常用内置函数汇总

    一:内置类:(1)常用内置类1,class int(object): """ int(x=0) -> integer int(x, base=10) -> i ...

  4. R 语言常用操作与函数汇总

    总结了一下 R 语言中常用的一些操作与函数使用,抛砖引玉,分享一下给大家,如有错误的地方欢迎留言指正. 怎样显示 R 软件中某个包中包含的全部数据集? > library(MASS)> d ...

  5. python常用内置函数汇总_太全了!Python3常用内置函数总结

    数学相关 abs(a) : 求取绝对值.abs(-1) max(list) : 求取list最大值.max([1,2,3]) min(list) : 求取list最小值.min([1,2,3]) su ...

  6. mysql 时间函数大全_mysql常用的日期函数汇总

    最近做统计时经常用到的几个mysql函数: 1. UNIX_TIMESTAMP() 该函数返回1970到现在的秒数,括号内也可以带参数,即返回1970年到指定时间段的秒数,注意是秒数,常用java的兄 ...

  7. 常用的Opencv函数汇总(持续更新...)

    文章目录 0. 安装 1. cv.read().cv.imwrite() 2. cv2.findContours.cv2.drawContours函数 3. cv2.copyMakeBorder函数 ...

  8. 几个常用的js 函数汇总大全

    废话不多说,直接看代码: 1.非空验证 function isNotEmpty(str){ if(str==null) { return false; } if(typeof(str)=='undef ...

  9. 常用字符串处理函数汇总

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

最新文章

  1. 《机器人爱好者(第2辑)》——《惑星历险》中的Robby
  2. [PM Tools]软件项目进度跟踪表v4.0
  3. 镜像公测招募啦!!!用镜像开通云服务器,限时免费体验!!
  4. c语言游戏编程网盘下载,C语言游戏编程 计算器(5分下载)
  5. RHEL4-SFTP配置
  6. ASP.NET MVC呼叫WCF Service的方法
  7. 基于K均值聚类算法的图像分割(Matlab)
  8. 记一次halo博客ssl证书过期处理过程
  9. sheet(isPresented:onDismiss:content:) (SwiftUI 中文文档手册 教程含源码)
  10. ActiveMQ在win7下启动失败解决方案
  11. Node如何去除短视频水印?
  12. 电脑病毒怎么彻底清理?你不知道的8个方法
  13. 计算机硬盘属于主机还是外部设备,计算机主机的外部连接分别是什么?
  14. 关于DB2数据库和SQL
  15. 【数据库运维】MYSQL备份恢复管理(下)
  16. 11、每日最新新闻接口,免费好用
  17. 【新技研】高通全新骁龙Krait 300/400处理器架构浅析
  18. 代码和设计是如何一步步腐化的
  19. IOS开发环境 Xcode 下载 安装
  20. 隐藏在PPT中的后现代主义印象派作品

热门文章

  1. 同样是做技术,为什么 Java 能比 C++ 多赚10万?
  2. 他95年出生,却拥有10年编程经验
  3. 玩转嵌入式,且看痞子衡
  4. 民用建筑工程给水排水设计深度图样_河南省怎样办理市政设计给水排水工程设计乙级资质...
  5. macos安装盘第三方工具制作_一步一步教你为macOS创建系统安装盘
  6. 红帽linux系统轴控系统,红帽发布企业版 Linux(RHEL) 8.0
  7. centos7不识别固态硬盘_固态硬盘分区与不分区哪个好【详细介绍】
  8. gearhost php,Gearhost 免费主机的申请
  9. java 跳跃表_c++实现跳跃表(Skip List)的方法示例
  10. matlab 判断元素索引_matlab – 获取矩阵中n个最大元素的索引