阅读量:79
在C++中,std::map是一个关联容器,它存储的元素是键值对,其中键不能重复
- 使用范围for循环遍历原始map并插入到新map中:
#include
#include
int main() {
std::map<int, std::string> original_map = {{1, "one"}, {2, "two"}, {3, "three"}};
std::map<int, std::string> copied_map;
for (const auto& pair : original_map) {
copied_map.insert(pair);
}
// 输出拷贝后的map
for (const auto& pair : copied_map) {
std::cout<< pair class="hljs-string">": "<< pair class="hljs-keyword">return 0;
}
- 使用
std::copy函数和插入迭代器:
#include
#include
#include
int main() {
std::map<int, std::string> original_map = {{1, "one"}, {2, "two"}, {3, "three"}};
std::map<int, std::string> copied_map;
std::copy(original_map.begin(), original_map.end(), std::inserter(copied_map, copied_map.end()));
// 输出拷贝后的map
for (const auto& pair : copied_map) {
std::cout<< pair class="hljs-string">": "<< pair class="hljs-keyword">return 0;
}
- 使用C++11的拷贝构造函数:
#include
#include
int main() {
std::map<int, std::string> original_map = {{1, "one"}, {2, "two"}, {3, "three"}};
std::map<int, std::string> copied_map(original_map);
// 输出拷贝后的map
for (const auto& pair : copied_map) {
std::cout<< pair class="hljs-string">": "<< pair class="hljs-keyword">return 0;
}
- 使用C++11的赋值操作符:
#include
#include
int main() {
std::map<int, std::string> original_map = {{1, "one"}, {2, "two"}, {3, "three"}};
std::map<int, std::string> copied_map;
copied_map = original_map;
// 输出拷贝后的map
for (const auto& pair : copied_map) {
std::cout<< pair class="hljs-string">": "<< pair class="hljs-keyword">return 0;
}
以上就是在C++中实现std::map拷贝的几种方法。