C++ 将长整数映射到对向量
在C++14中,我尝试使用map来存储需要快速访问的值 其实问题是C++ 将长整数映射到对向量,c++,c++14,unordered-map,C++,C++14,Unordered Map,在C++14中,我尝试使用map来存储需要快速访问的值 其实问题是 我需要将long int映射到向量,但它应该包含2个值 我认为向量对适合这个 例如: 5是我的long-long-int 我有 1,3 2,5 5,4 89998我有 6,899 8,8887 9999,566 等 unordered\u mapmp 但我不知道如何访问和遍历它 问题 1.如何将这些值添加到地图
- 我需要将
映射到向量,但它应该包含2个值long int
- 我认为向量对适合这个
long-long-int
我有
1,3
2,5
5,4
89998我有
6,899
8,8887
9999,566
等
unordered\u mapmp
但我不知道如何访问和遍历它
问题
1.如何将这些值添加到地图
2.我如何访问它。例如,如果可能的话*您的实际问题是,无论您的用例如何,您都不知道如何使用
std::unordered\u map
您应该做的第一件事是阅读aboutstd::unordered_map
。它会给你所有问题的答案
如何将这些值添加到地图 有几种(C++14)方法可以实现此目的:
std::无序映射::插入()
std::无序映射::安放()
std::无序映射::运算符[]()
(注意:将插入不存在的元素)std::无序映射::运算符[]()
(注意:如果不存在,将抛出std::unordered_map::at()
异常)std::out_of_range
示例:
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;
}
一般来说,像“是否有可能做…”这样的问题总是可以回答为“是”。同样的事情在这里也是很可能的。请回答第二个问题。至于语法,请记住map
mp
有一个重载的“index”操作符,它返回对特定键的值的引用。因此,例如,mp[5]
可以用作向量,您可以迭代/遍历(for(auto-const&pair:mp[5]){std::cout您的问题是什么?对于访问,请使用,例如,索引操作符[]对于遍历,使用,例如迭代器或基于范围的循环。这些是在每个初学者C++书中提到的非常标准的方法。如果你显示你的代码试图访问和遍历它,你可以把它变成一个好的可回答的问题,解释它应该做什么,以及它是如何做不应该做的,包括可能的错误。s、 输入和输出非常感谢。这是我一直在寻找的答案。
89998 -> [(6, 899)(8, 8887)(9999, 556)]
5 -> [(1, 3)(2, 5)(5, 4)]