std :: move(key)迭代unordered_map <string,string>?

Ami*_*sta 2 c++ unordered-map c++11

以下是安全的吗?

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)});
}
Run Code Online (Sandbox Code Playgroud)

我没有my_map在循环之后使用,是否可以从key迭代中移动它?

小智 5

是的,不是.

不,因为它不符合你的意图.一个关键unordered_map是const限定.它无法移动.

是的,因为代码是安全的并且可以编译.简单地复制密钥.

这是所有的有序和无序关联容器一样的,包括map,set,unordered_multiset,等.