本篇学习multimap插入数据相关的操作,具体的操作函数如下

insert

插入元素或结点 (C++17 起)
(公开成员函数)

emplace

(C++11)

原位构造元素
(公开成员函数)

emplace_hint

(C++11)

使用提示原位构造元素
(公开成员函数)
#include <map>
#include <string>
#include <time.h>
#include <iostream>using namespace std;void insertOperator()
{multimap<int, string> multimap1;//1.insert 插入元素或结点multimap1.insert({1, "hello"});auto map1it = multimap1.begin();multimap1.insert(map1it, {7, "333333"});multimap1.insert(pair<int, string>(3, "scott"));multimap1.insert(pair(2, "C++17 wirte"));//C++17 的写法smultimap1.insert({1, "world"});cout << "multimap1.size = " << multimap1.size() << " multimap1.max_size = " << multimap1.max_size() << endl;auto iter1 = multimap1.begin();cout << "multimap1 of value: " << endl;while (iter1 != multimap1.end()){cout << iter1->first << ": " << iter1->second << endl;iter1++;}//2..emplace原位构造元素multimap<int, string> multimap2;multimap2.emplace(11, "emplace aaaaa");multimap2.emplace(11, "emplace bbbbb");multimap2.emplace(pair(12, "emplace ccccc"));auto pair1 = multimap2.emplace(pair{13, "emplace ddddd"});//返回一个pair<iterator, bool>cout << "iterator->first:" << pair1->first << " second: " << pair1->second << endl;cout << "map2.size = " << multimap2.size() << " multimap2.max_size = " << multimap2.max_size() << endl;auto map2it = multimap2.begin();while(map2it != multimap2.end()){cout << map2it->first << ": " << map2it->second << endl;++map2it;}cout << "---------------------------------" << endl;//3.emplace_hint使用提示原位构造元素multimap<int, string> multimap3;auto map3it = multimap3.begin();//返回一个迭代器auto map3Hint1 = multimap3.emplace_hint(map3it, 23, "emplace_hint aaaaa");multimap3.emplace_hint(map3it, 21, "emplace_hint bbbbbb");auto map3Hint2 = multimap3.emplace_hint(map3it, 21, "emplace_hint cccccc");multimap<int, string>::iterator map3it2 = multimap3.begin();while(map3it2 != multimap3.end()){cout << map3it2->first << ": " << map3it2->second << endl;++map3it2;}cout << "emplace_hint1 " << map3Hint1->first << ": " << map3Hint1->second << endl;cout << "emplace_hint2 " << map3Hint2->first << ": " << map3Hint2->second << endl;//插入时间对比int count = 1000000;multimap<int, string> multimap4;double startTime1 = clock();//1计算开始for(int i = 0; i < count; i++)//214748{multimap4.emplace(pair{i, "hello"});}double endTime1 = clock();//1时间结束multimap4.clear();cout << "for    1 run time is: " << (double)(endTime1 - startTime1) / CLOCKS_PER_SEC << "s" << endl;cout << endl;multimap<int, string> multimap5;double startTime2 = clock();//1计算开始for(int i = 0; i < count; i++)//214748{multimap5.insert(pair{i, "hello"});}double endTime2 = clock();//1时间结束multimap5.clear();cout << "for    2 run time is: " << (double)(endTime2 - startTime2) / CLOCKS_PER_SEC << "s" << endl;cout << endl;}int main()
{insertOperator();return 0;
}

运行结果:

参考:

https://zh.cppreference.com/w/cpp/container/multimap

multimap学习之插入数据操作insert,emplace ,emplace_hint相关推荐

  1. unordered_multimap学习之插入数据操作insert,emplace ,emplace_hint

    本篇学习unordered_multimap的插入数据操作,具体的函数如下: insert (C++11) 插入元素或结点 (C++17 起) (公开成员函数) emplace (C++11) 原位构 ...

  2. JDBC进行批量插入数据操作

    目录 1.方式一:使用PreparedStatement 2.方式二:使用addBatch(),excuteBatch(),clearBatch() 3.方式三:设置不允许自动提交数据 4.总结 1. ...

  3. mysql数据库插入数据语法_数据库请求:插入数据(INSERT)

    MySQL中, INSERT 语句用来向数据表中插入数据.可以一次性插入一条或多条数据. 语法: SQL中通过 INSERT INTO 命令向数据表中插入数据.下面是通用语法: INSERT INTO ...

  4. SQL (十四)插入数据(insert语句,把数据插入表中)

    文章目录 插入完整的行:values子句 不安全写法 安全写法:在表名后的括号明确给出列名 小结 插入行的一部分:简单 插入某些查询的结果(即检索出的数据):insert select 示例:把另一个 ...

  5. Mysql 之 插入数据(insert into 、 replace into 解析)

    Mysql 插入数据 1.插入数据方法 mysql中常用的三种插入数据的语句: insert into:正常的插入数据,插入数据的时候会检查主键或者唯一索引,如果出现重复就会报错: replace i ...

  6. Java JDBC批处理插入数据操作

    在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...

  7. MyBatis的插入数据操作

    编写UserMapper映射文件 <mapper namespace="userMapper"> <insert id="add" param ...

  8. java jdbc 批处理_Java JDBC批处理插入数据操作

    在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...

  9. SQL SERVER插入数据操作

    准备工作: 我需要一张User表,这张表有几个字段,还有一个自增长的数字id,表结构如下: 这是一张比现实应用中简单的多的用户表,UserID是自增长字段. 开始执行一个最简单的INSERT: ? 1 ...

最新文章

  1. Windows Phone开发(36):动画之DoubleAnimation 转:http://blog.csdn.net/tcjiaan/article/details/7521388...
  2. centos7 yum 错误 This system is not registered with an entitlement server
  3. DNS服务器的默认区域文件名,DNS服务器全攻略之三 :创建与管理DNS区域.doc
  4. 今日头条们的 App 内容页技术实现与优化 | CSDN技术头条
  5. jdbc 连接池 java_JDBC自定义连接池过程详解
  6. 实战 TPCC-MySQL 基准测试
  7. 【优化算法】改进型的LMS算法-SVSLMS算法【含Matlab源码 632期】
  8. KindEditor上传本地图片
  9. PDCA循环——快速提升软件质量的必备工具
  10. 大学英语六级超全复习资料
  11. 7-62 贴“福”字
  12. 关于读书的名人名言,让你体会读书的好处有哪些
  13. 剪不断,理不乱——Javascript,JQuery,AJAX
  14. python画樱花树教程_turtle模块-知乎画樱花树
  15. 转:mbedtls学习3.mbedtls_API分析
  16. HYDU_create_process (./utils/launch/launch.c:75): execvp error on file *
  17. 管理员禁止运行此应用的解决办法
  18. ip2977_desc.TXT
  19. linux下的source命令(.命令)解释及应用
  20. 如何利用思维导图对知识点进行总结归纳

热门文章

  1. Linux入门学习(四)—— 什么链接文件?软链接文件和硬链接文件有什么区别以及特点?
  2. 基于android的快递查询项目源码
  3. 014_关于session实现短信验证登录的前端启动
  4. python bottle框架分析_总结关于bottle框架注意点
  5. Animation Animate Armture三个动画的使用
  6. 恒星星空图绘制(一)——参考系
  7. 氚云标准版的简单讲解
  8. 深度学习的几何观点(1) - 流形分布定律
  9. 操作系统精髓与设计原理 第9版总结
  10. EduCoder 计算机网络实验 DNS协议分析