将长整型映射到成对向量
Mapping a long long integer to vector of pairs
在 C++14 中,我尝试使用 map 来存储我需要快速访问的值。
其实问题是
我需要将 long long int
映射到向量,但它应该包含 2 个值。
我觉得vector of pairs适合这个
示例:
5 是我的 long long int
5 -> 我有
1,3
2,5
5,4
89998 我有
6,899
8,8887
9999,566
等等
unordered_map<long long,vector<pair<int,int>>>mp
但是不知道怎么访问和遍历
问题
1.How 我是否将这些值添加到地图
2.How 我可以访问它吗?可能的话举例*
你的实际问题是你不知道如何使用 std::unordered_map
无论你的用例如何。
您应该做的第一件事是阅读关于 std::unordered_map
的 related documentation。它会为您带来所有问题的答案。
How do I add those values to map ?
您有几种 (C++14) 方法:
std::unordered_map::insert()
std::unordered_map::emplace()
std::unordered_map::operator[]()
注:这些函数不一样。关于每个函数的详细信息(它的作用和使用方法)由您阅读文档。
How do I access it ?
您可以使用以下方式访问元素:
std::unordered_map::operator[]()
(注:元素不存在会插入)
std::unordered_map::at()
(注意:不存在会抛出std::out_of_range
异常)
But I don't know how to access it and traverse it.
如果要遍历的话,最简单的方法就是用一个range-based for loop.
示例:
int main()
{
using ValueType = std::vector<std::pair<int, int>>;
// Create the map
std::unordered_map<long long, ValueType> umap;
// Fill the map
umap.emplace(std::make_pair<long long, ValueType>(5, {{1, 3}, {2, 5}, {5, 4}}));
umap.emplace(std::make_pair<long long, ValueType>(89998, {{6, 899}, {8, 8887}, {9999, 556}}));
// Iterate over the map
for(const std::pair<long long, ValueType> & element : umap)
{
std::cout << element.first << " -> " << '[';
for(const std::pair<int, int> & couple : element.second)
std::cout << '(' << couple.first << ", " << couple.second << ')';
std::cout << "]\n";
}
return 0;
}
输出:
89998 -> [(6, 899)(8, 8887)(9999, 556)]
5 -> [(1, 3)(2, 5)(5, 4)]
在 C++14 中,我尝试使用 map 来存储我需要快速访问的值。
其实问题是
我需要将
long long int
映射到向量,但它应该包含 2 个值。我觉得vector of pairs适合这个
示例:
5 是我的 long long int
5 -> 我有
1,3
2,5
5,4
89998 我有
6,899
8,8887
9999,566
等等
unordered_map<long long,vector<pair<int,int>>>mp
但是不知道怎么访问和遍历
问题
1.How 我是否将这些值添加到地图
2.How 我可以访问它吗?可能的话举例*
你的实际问题是你不知道如何使用 std::unordered_map
无论你的用例如何。
您应该做的第一件事是阅读关于 std::unordered_map
的 related documentation。它会为您带来所有问题的答案。
How do I add those values to map ?
您有几种 (C++14) 方法:
std::unordered_map::insert()
std::unordered_map::emplace()
std::unordered_map::operator[]()
注:这些函数不一样。关于每个函数的详细信息(它的作用和使用方法)由您阅读文档。
How do I access it ?
您可以使用以下方式访问元素:
std::unordered_map::operator[]()
(注:元素不存在会插入)std::unordered_map::at()
(注意:不存在会抛出std::out_of_range
异常)
But I don't know how to access it and traverse it.
如果要遍历的话,最简单的方法就是用一个range-based for loop.
示例:
int main()
{
using ValueType = std::vector<std::pair<int, int>>;
// Create the map
std::unordered_map<long long, ValueType> umap;
// Fill the map
umap.emplace(std::make_pair<long long, ValueType>(5, {{1, 3}, {2, 5}, {5, 4}}));
umap.emplace(std::make_pair<long long, ValueType>(89998, {{6, 899}, {8, 8887}, {9999, 556}}));
// Iterate over the map
for(const std::pair<long long, ValueType> & element : umap)
{
std::cout << element.first << " -> " << '[';
for(const std::pair<int, int> & couple : element.second)
std::cout << '(' << couple.first << ", " << couple.second << ')';
std::cout << "]\n";
}
return 0;
}
输出:
89998 -> [(6, 899)(8, 8887)(9999, 556)] 5 -> [(1, 3)(2, 5)(5, 4)]