c++ - 如何提取由 unordered_map::emplace 重新调整的对的值?
问题描述
我试图让我的代码 1 行更短,这是一个崇高的事业。我有这张无序的地图
std::unordered_map<std::string, int> um;
我想将整数分配给同一行上的一个变量,我将一对放入无序映射中,就像这样
int i_want_132_here = um.emplace("hi", 132).first.???;
问题是,我不知道如何处理 [return value of unordered_map::emplace].first
在调试器中,我可以看到 "first" 包含 ("hi", 132) 但我如何访问这些值?
解决方案
emplace
返回一个pair<iterator, bool>
。
所以你应该这样做:
int i_want_132_here = (*um.emplace("hi", 132).first).second;
替代语法:
int i_want_132_here = um.emplace("hi", 132).first->second;
一般来说,我更喜欢(*it)
form 而不是it->
.
推荐阅读
- spring-boot - Spring boot 安全性、API 密钥保护或 oauth2 resourceServer 用于相同资源
- c - gcc 在我的系统上生成什么汇编语言?
- node.js - 应该在客户端还是服务器端完成长时间运行的视频处理任务
- javascript - 带有指示器 CSS 的幻灯片
- reactjs - 如何在反应中添加或删除输入字段
- node.js - 无法解析以获取令牌
- ruby-on-rails - REST API 响应取决于发出请求的人
- c++ - 不能将超过 1 行写入文件
- python - 通过“os.system”调用 Linux 命令时的反斜杠问题
- gcc - cilk.h:没有这样的文件或目录