Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将长整数映射到对向量_C++_C++14_Unordered Map - Fatal编程技术网

C++ 将长整数映射到对向量

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.如何将这些值添加到地图

在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.我如何访问它。例如,如果可能的话*

您的实际问题是,无论您的用例如何,您都不知道如何使用
std::unordered\u map

您应该做的第一件事是阅读about
std::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)]