multimap学习之插入数据操作insert,emplace ,emplace_hint
本篇学习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相关推荐
- unordered_multimap学习之插入数据操作insert,emplace ,emplace_hint
本篇学习unordered_multimap的插入数据操作,具体的函数如下: insert (C++11) 插入元素或结点 (C++17 起) (公开成员函数) emplace (C++11) 原位构 ...
- JDBC进行批量插入数据操作
目录 1.方式一:使用PreparedStatement 2.方式二:使用addBatch(),excuteBatch(),clearBatch() 3.方式三:设置不允许自动提交数据 4.总结 1. ...
- mysql数据库插入数据语法_数据库请求:插入数据(INSERT)
MySQL中, INSERT 语句用来向数据表中插入数据.可以一次性插入一条或多条数据. 语法: SQL中通过 INSERT INTO 命令向数据表中插入数据.下面是通用语法: INSERT INTO ...
- SQL (十四)插入数据(insert语句,把数据插入表中)
文章目录 插入完整的行:values子句 不安全写法 安全写法:在表名后的括号明确给出列名 小结 插入行的一部分:简单 插入某些查询的结果(即检索出的数据):insert select 示例:把另一个 ...
- Mysql 之 插入数据(insert into 、 replace into 解析)
Mysql 插入数据 1.插入数据方法 mysql中常用的三种插入数据的语句: insert into:正常的插入数据,插入数据的时候会检查主键或者唯一索引,如果出现重复就会报错: replace i ...
- Java JDBC批处理插入数据操作
在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...
- MyBatis的插入数据操作
编写UserMapper映射文件 <mapper namespace="userMapper"> <insert id="add" param ...
- java jdbc 批处理_Java JDBC批处理插入数据操作
在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...
- SQL SERVER插入数据操作
准备工作: 我需要一张User表,这张表有几个字段,还有一个自增长的数字id,表结构如下: 这是一张比现实应用中简单的多的用户表,UserID是自增长字段. 开始执行一个最简单的INSERT: ? 1 ...
最新文章
- Windows Phone开发(36):动画之DoubleAnimation 转:http://blog.csdn.net/tcjiaan/article/details/7521388...
- centos7 yum 错误 This system is not registered with an entitlement server
- DNS服务器的默认区域文件名,DNS服务器全攻略之三 :创建与管理DNS区域.doc
- 今日头条们的 App 内容页技术实现与优化 | CSDN技术头条
- jdbc 连接池 java_JDBC自定义连接池过程详解
- 实战 TPCC-MySQL 基准测试
- 【优化算法】改进型的LMS算法-SVSLMS算法【含Matlab源码 632期】
- KindEditor上传本地图片
- PDCA循环——快速提升软件质量的必备工具
- 大学英语六级超全复习资料
- 7-62 贴“福”字
- 关于读书的名人名言,让你体会读书的好处有哪些
- 剪不断,理不乱——Javascript,JQuery,AJAX
- python画樱花树教程_turtle模块-知乎画樱花树
- 转:mbedtls学习3.mbedtls_API分析
- HYDU_create_process (./utils/launch/launch.c:75): execvp error on file *
- 管理员禁止运行此应用的解决办法
- ip2977_desc.TXT
- linux下的source命令(.命令)解释及应用
- 如何利用思维导图对知识点进行总结归纳