unordered_map的几种初始化方法
1、使用列表初始化
#include <unordered_map>
int main() {
// 使用列表初始化
std::unordered_map<char, int> m1 = {{'a', 1}, {'b', 2}, {'c', 3}};
// 另一种等价的写法
std::unordered_map<char, int> m2{{'a', 1}, {'b', 2}, {'c', 3}};
return 0;
}
2、使用 insert 方法
#include <unordered_map>
int main() {
std::unordered_map<char, int> m;
// 使用 insert 插入单个元素
m.insert({'a', 1});
// 使用 insert 插入 pair 类型的元素
m.insert(std::make_pair('b', 2));
// 还可以使用 emplace 提供相同的功能
m.emplace('c', 3);
return 0;
}
3、使用 operator[] 赋值
#include <unordered_map>
int main() {
std::unordered_map<char, int> m;
// 使用 operator[] 赋值
m['a'] = 1;
m['b'] = 2;
m['c'] = 3;
return 0;
}
4、使用 std::copy 和 std::inserter
#include <unordered_map>
#include <vector>
#include <algorithm> // for std::copy
#include <iterator> // for std::inserter
int main() {
std::vector<std::pair<char, int>> vec = {{'a', 1}, {'b', 2}, {'c', 3}};
std::unordered_map<char, int> m;
// 使用 std::copy 和 std::inserter 进行赋值
std::copy(vec.begin(), vec.end(), std::inserter(m, m.end()));
return 0;
}