c++ - 迭代 unordered_map 时的 std::move(key)?
问题描述
以下安全吗?
unordered_map<string, string> my_map;
unordered_map<string, double> new_map;
for(auto&& [key, value] : my_map) {
new_map.insert({std::move(key), std::stod(value)});
}
我没有my_map
在循环之后使用,可以从key
while 迭代中移动吗?
解决方案
是和不是。
不,因为它不符合您的意图。an 的键unordered_map
是 const 限定的。它不能被移走。
是的,因为代码是安全的并且可以编译。密钥被简单地复制。
这对于所有有序和无序的关联容器都是一样的,包括map
、set
、unordered_multiset
等。
推荐阅读
- python - 使用 Python 设置用户对共享点文件的权限
- reactjs - 父组件无法访问子组件中设置的会话存储值
- android - 隐藏在 reyclerview 项目 android 后面的多行 EditText 视图
- sql - 根据维度之间的匹配从前一行中查找值并将其插入到同一个 SQL 数据库表中
- angular - Angular 反应形式的 ngbDatepicker
- flutter - 在颤振返回空小部件时使用来自firebase的数据构建小部件
- python - 带有 QImage 的 setPixmap 导致崩溃
- c++ - 请在#include 处更新包含路径错误
- flutter - 将按钮放在容器底部的颤动中
- sorting - 根据嵌套值之一对地图进行排序