松垮垮 松垮垮
首页
  • GPU并行编程
  • 图形学
  • 归并算法
  • 计算机视觉
  • css
  • html
  • JavaScript
  • vue
  • 压缩命令
  • cmdline
  • Docker
  • ftrace跟踪技术
  • gcov代码覆盖率测试
  • GDB
  • git
  • kgdb
  • linux操作
  • markdown
  • systemtap
  • valgrind
  • 设计模式
  • 分布式
  • 操作系统
  • 数据库
  • 服务器
  • 网络
  • C++
  • c语言
  • go
  • JSON
  • Makefile
  • matlab
  • OpenGL
  • python
  • shell
  • 正则表达式
  • 汇编
  • GPU并行编程
  • mysql
  • nginx
  • redis
  • 网络
  • 计算机视觉
  • 进程管理
  • linux调试
  • 【Python】:re.error bad escape i at position 4
  • 搭建ai知识助手
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

松垮垮

c++后端开发工程师
首页
  • GPU并行编程
  • 图形学
  • 归并算法
  • 计算机视觉
  • css
  • html
  • JavaScript
  • vue
  • 压缩命令
  • cmdline
  • Docker
  • ftrace跟踪技术
  • gcov代码覆盖率测试
  • GDB
  • git
  • kgdb
  • linux操作
  • markdown
  • systemtap
  • valgrind
  • 设计模式
  • 分布式
  • 操作系统
  • 数据库
  • 服务器
  • 网络
  • C++
  • c语言
  • go
  • JSON
  • Makefile
  • matlab
  • OpenGL
  • python
  • shell
  • 正则表达式
  • 汇编
  • GPU并行编程
  • mysql
  • nginx
  • redis
  • 网络
  • 计算机视觉
  • 进程管理
  • linux调试
  • 【Python】:re.error bad escape i at position 4
  • 搭建ai知识助手
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • C++

    • C++11
    • C++17
    • c++规范
    • cmake和宏开关
    • 为了高效
    • 作用域和生命周期
    • 关键字
    • 内存分配
    • 基础
    • 容器
    • 对象和类
    • 线程
  • c语言
  • Go

  • JSON
  • Makefile
  • matlab

  • OpenGL
  • python

  • shell
  • 正则表达式
  • 汇编
  • 语言
  • C++
songkuakua
2025-02-15

C++17

# C++17

Owner: -QVQ-

# map判存在再生成对象

对于map容器,存在一个使用场景,判断这个元素在map中是否存在,不存在插入一个对象并返回,如果存在则直接返回

template <class... Args>
pair<iterator, bool> try_emplace(const key_type& k, Args&&... args);
//返回pair对象,second表示插入是否成功
//如果插入成功,first表示插入位置的迭代器,
//如果插入失败,first表示已存在相同key的元素的位置的迭代器
1
2
3
4
5
//使用场景,打开某个服务
void turnOn(int k, int v){
	//尝试找到这个服务
	auto [iter, inserted] = m_map.try_emplace(k);
	//如果没有这个服务,则生成对象
	if(inserted){
		iter->second = std::make_unique<ChatDialog>();
	}
	//启用服务
	iter->second->activate();
}
1
2
3
4
5
6
7
8
9
10
11

对于,判断这个元素在map中是否存在,不存在则插入对象,存在则修改对象

使用insert_or_assign

std::map<std::string, int> mapUsersAge{ { "Alex", 45 }, { "John", 25 } };
mapUsersAge.insert_or_assign("Tom", 26);
mapUsersAge.insert_or_assign("Alex", 27);
1
2
3
上次更新: 2025/02/21, 14:57:10
C++11
c++规范

← C++11 c++规范→

最近更新
01
搭建ai知识助手
02-23
02
边缘检测
02-15
03
css
02-15
更多文章>
Theme by Vdoing | Copyright © 2025-2025 松垮垮 | MIT License | 蜀ICP备2025120453号 | 川公网安备51011202000997号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 纯净模式