阅读量:0
在C++中,使用std::map
作为关联容器时,有多种方法可以进行拷贝
- 使用拷贝构造函数:
#include<iostream> #include <map> int main() { std::map<int, std::string> map1 = {{1, "one"}, {2, "two"}, {3, "three"}}; // 使用拷贝构造函数创建一个新的map std::map<int, std::string> map2(map1); // 输出拷贝后的map for (const auto& pair : map2) { std::cout<< pair.first << ": "<< pair.second<< std::endl; } return 0; }
- 使用赋值操作符:
#include<iostream> #include <map> int main() { std::map<int, std::string> map1 = {{1, "one"}, {2, "two"}, {3, "three"}}; // 使用赋值操作符创建一个新的map std::map<int, std::string> map2; map2 = map1; // 输出拷贝后的map for (const auto& pair : map2) { std::cout<< pair.first << ": "<< pair.second<< std::endl; } return 0; }
- 使用
std::copy
(不推荐):
注意:这种方法并不会复制原始map
的内部结构,而是将相同的键值对插入到新的map
中。因此,在大多数情况下,不推荐使用这种方法。
#include<iostream> #include <map> #include<algorithm> int main() { std::map<int, std::string> map1 = {{1, "one"}, {2, "two"}, {3, "three"}}; // 使用std::copy创建一个新的map std::map<int, std::string> map2; std::copy(map1.begin(), map1.end(), std::inserter(map2, map2.end())); // 输出拷贝后的map for (const auto& pair : map2) { std::cout<< pair.first << ": "<< pair.second<< std::endl; } return 0; }
总之,使用拷贝构造函数或赋值操作符是在C++中拷贝std::map
的最佳实践。这些方法简单、高效,并且能够保留原始map
的内部结构。