在C++14中,我尝试使用map来存储需要快速访问的值。
实际上问题是
-
我需要将
long long int
映射到向量,但它应该包含2个值。 -
我认为向量对适合这个。
示例:5是我的long long int
对于5->我有
1,3
2,5
5,4
89998我有
6,899
8,8887
9999,566
etc
unordered_map<long long,vector<pair<int,int>>>mp
但我不知道如何访问和遍历
问题
1.如何将这些值添加到映射
2.我如何访问它。例如,如果可能*
您的实际问题是,无论您的用例如何,您都不知道如何使用std::unordered_map
。
您应该做的第一件事是阅读有关std::unordered_map
的相关文档。它会给你所有问题的答案。
如何将这些值添加到映射?
有几种(C++14(方法:
std::unordered_map::insert()
std::unordered_map::emplace()
std::unordered_map::operator[]()
注意:这些函数不相同。您可以阅读有关每个函数的详细信息的文档(它做什么以及如何使用它(
如何访问它?
您可以使用:访问元素
std::unordered_map::operator[]()
(注意:如果元素不存在,将插入元素(std::unordered_map::at()
(注意:如果std::out_of_range
不存在,将抛出异常(
但我不知道如何访问和遍历它。
如果要遍历它,最简单的方法是使用基于范围的for循环。
示例:
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(