C++ std::在无序映射上迭代时移动(键)<;字符串,字符串>;?
以下是安全的吗C++ std::在无序映射上迭代时移动(键)<;字符串,字符串>;?,c++,c++11,unordered-map,C++,C++11,Unordered Map,以下是安全的吗 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)}); } 无序地图我的地图; 无序地图-新地图; 对于(自动&&[key,value]:我的地图){ 新的映射
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)});
}
无序地图我的地图;
无序地图-新地图;
对于(自动&&[key,value]:我的地图){
新的映射插入({std::move(key),std::stod(value)});
}
循环结束后,我没有使用我的映射
,在循环过程中可以从键
移动吗?是和否
不,因为它不符合你的意愿。无序映射的键是const-qualified。它不能从中移动
是的,因为代码是安全的,并且可以编译。钥匙是简单地复制的
这对于所有有序和无序关联容器都是一样的,包括map
、set
、unordered\u multiset
,等等。std::map的情况也是这样吗?@aminoosta请参见