std :: move(key)遍历unordered_map <string,string =“”>吗?

时间:2018-08-29 03:22:37

标签: 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)});
}

循环后我没有使用my_map,可以在遍历key的同时从{{1}}移走吗?

1 个答案:

答案 0 :(得分:5)

是,不是。

否,因为它无法满足您的预期。 unordered_map的密钥是const限定的。无法将其移出。

是的,因为代码是安全的并且可以编译。密钥只需复制即可。

对于所有有序和无序关联容器,包括mapsetunordered_multiset等,都是相同的。