unordered_multimap学习之插入数据操作insert,emplace ,emplace_hint
本篇学习unordered_multimap的插入数据操作,具体的函数如下:
insert (C++11) |
插入元素或结点 (C++17 起) (公开成员函数) |
emplace (C++11) |
原位构造元素 (公开成员函数) |
emplace_hint (C++11) |
使用提示原位构造元素 (公开成员函数) |
示例代码:
#include <unordered_map>
#include <utility>
#include <string>
#include <time.h>
#include <iostream>using namespace std;void insertOperator()
{unordered_multimap<int, string>map1;//1.insert 插入元素或结点map1.insert({1, "hello"});auto map1it = map1.begin();map1.insert(map1it, {7, "333333"});//键值存在插入无效map1.insert(pair<int, string>(3, "scott"));map1.insert(pair(2, "C++17 的写法"));//C++17 的写法//map1[2] = "修改元素";//元素修改cout << "map1.size = " << map1.size() << " map1.max_size = " << map1.max_size() << endl;auto iter1 = map1.begin();cout << "map1的值为:" << endl;while (iter1 != map1.end()){cout << iter1->first << ": " << iter1->second << endl;iter1++;}//2..emplace原位构造元素unordered_multimap<int, string> map2;map2.emplace(std::make_pair(11, std::string("使用pair的移动构造函数")));map2.emplace(std::make_pair(11, "使用 pair 的转换移动构造函数"));map2.emplace(12, "使用 pair 的模板构造函数");map2.emplace(pair(12, "emplace插入第二个元素"));auto pair1 = map2.emplace(pair{13, "emplace插入第三个元素"});//返回一个pair<int, string> 的迭代器cout << "iterator.first:" << pair1->first << " second: " << pair1->second << endl;cout << "map2.size = " << map2.size() << " map2.max_size = " << map2.max_size() << endl;auto map2it = map2.begin();while(map2it != map2.end()){cout << map2it->first << ": " << map2it->second << endl;++map2it;}cout << "---------------------------------" << endl;//3.emplace_hint使用提示原位构造元素unordered_multimap<int, string> map3;auto map3it = map3.begin();//返回一个迭代器auto map3Hint1 = map3.emplace_hint(map3it, 23, "emplace_hint插入第三个元素");map3.emplace_hint(map3it, 21, "emplace_hint插入第一个元素");auto map3Hint2 = map3.emplace_hint(map3it, 21, "emplace_hint插入第二个元素");unordered_multimap<int, string>::iterator map3it2 = map3.begin();while(map3it2 != map3.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;unordered_multimap<int, string> map4;double startTime1 = clock();//1计算开始for(int i = 0; i < count; i++)//214748{map4.insert(pair{i, "hello"});}double endTime1 = clock();//1时间结束map4.clear();cout << "for 1 run time is: " << (double)(endTime1 - startTime1) / CLOCKS_PER_SEC << "s" << endl;cout << endl;unordered_multimap<int, string> map5;double startTime2 = clock();//1计算开始for(int i = 0; i < count; i++)//214748{map5.emplace(pair{i, "hello"});//pair{i, "hello"}比 (i, "hello")速度快}double endTime2 = clock();//1时间结束map5.clear();cout << "for 2 run time is: " << (double)(endTime2 - startTime2) / CLOCKS_PER_SEC << "s" << endl;cout << endl;
}int main()
{insertOperator();cout << "hello world" << endl;return 0;
}
运行结果:
参考:
https://zh.cppreference.com/w/cpp/container/unordered_multimap
unordered_multimap学习之插入数据操作insert,emplace ,emplace_hint相关推荐
- multimap学习之插入数据操作insert,emplace ,emplace_hint
本篇学习multimap插入数据相关的操作,具体的操作函数如下 insert 插入元素或结点 (C++17 起) (公开成员函数) emplace (C++11) 原位构造元素 (公开成员函数) em ...
- 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 ...
最新文章
- 轻松获取LAMP,LNMP环境编译参数配置
- monkeyrunner环境配置
- 你是什么类型的程序员?
- java怎样调用DLL方法
- GridView里的一点小功能:截取多余字符、改变鼠标经过行的样式
- 软件测试工程师面试必备技能
- 测试场景组件化轮子——用例元
- Oracle闪回技术
- android 前后同时预览_用上这些官方动态壁纸,让你的 Android 主屏简洁又优雅
- 表弟励志做程序员了,除了霸王我还能给他什么?
- scrt设置右键粘贴,选中复制
- scala_day01_安装_基础_IO_函数_递归_异常_方法_样例类_伴生对象
- Linux驱动开发: 杂项字符设备
- 计算机毕设(附源码)JAVA-SSM化妆品销售网站
- 微信小程序 之wx.previewImage图片预览(多张图片预览)
- 开关电源buck电感、电容选择
- 接口测试神器,它来了,它带着光环走来了
- iPhone 4与iPad开发基础教程
- java如何让线程sheep_Java面试知识点之线程篇(三)
- 使用open live writer客户端写博客(亲测有效)
热门文章
- 987654321 问题
- python生成一副扑克牌_基于Python实现扑克牌面试题
- linux chown命令_如何在Linux上使用chown命令
- 使用遗传算法解旅行商问题
- 2022中国大学生程序设计竞赛高职专场
- 架构师之路(五)如何做好业务建模?
- VisualFreeBasic编程教程(从零开始学或VB进阶)
- 没有U盘安装ubuntu18(linux),EasyUEFI安装ubuntu
- #LeetCode169. 多数元素 #在所有 Java 提交中击败了 99.94% 的用户 @FDDLC
- FastDFS的Tracker及Storage节点添加及删除