怎么向map中插入大量数据
时间: 2024-01-27 15:04:14 浏览: 16
向`map`中插入大量数据可以使用`insert`函数,这个函数接受一个迭代器区间和一个值或值的`pair`,用于将一组键值对插入到`map`中。以下是一个示例代码:
```c++
#include <iostream>
#include <map>
#include <string>
int main() {
std::map<std::string, int> myMap;
// 构造数据
std::vector<std::pair<std::string, int>> data = {
{"apple", 1},
{"banana", 2},
{"orange", 3},
// ... 大量数据
};
// 将数据插入到map中
myMap.insert(data.begin(), data.end());
// 遍历map
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << it->first << " : " << it->second << std::endl;
}
return 0;
}
```
在这个示例代码中,我们使用`std::vector`来保存大量的键值对数据,然后使用`insert`函数将这些数据插入到`map`中。需要注意的是,`insert`函数接受的迭代器区间和`pair`中的键不能重复,否则会覆盖原来的键值对。
如果数据比较大,可以考虑使用`emplace`函数,这个函数可以直接在`map`中构造键值对,避免了复制数据的开销。以下是一个示例代码:
```c++
#include <iostream>
#include <map>
#include <string>
int main() {
std::map<std::string, int> myMap;
// 构造数据
std::vector<std::pair<std::string, int>> data = {
{"apple", 1},
{"banana", 2},
{"orange", 3},
// ... 大量数据
};
// 将数据插入到map中
for (auto& p : data) {
myMap.emplace(p.first, p.second);
}
// 遍历map
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << it->first << " : " << it->second << std::endl;
}
return 0;
}
```
这个示例代码中,我们使用`emplace`函数直接在`map`中构造键值对,避免了复制数据的开销。