c++中如何实现哈希图?

问题描述 投票:0回答:1

如何实现 mymap[key]++ 可视化。我是在递增键还是在递增值? 在第1行 hash[numberToFind] 我在结果中插入的是键还是值?

    unordered_map<int, int> hash;
    vector<int> result;
    for (int i = 0; i < arr.size(); i++) {
        int numberToFind = target - arr[i];
        if (hash.find(numberToFind) != hash.end()) {
            result.push_back(hash[numberToFind]); //LINE 1
            result.push_back(i);        
            return result;
        }

c++ c++11 hash
1个回答
1
投票

在stackoverflow.com上问之前,可以考虑去找一个好的参考资料。cppreference.com是相当不错的。

https:/en.cppreference.comwcppcontainerunordered_map。

  1. key 是键。

  2. mymap[key] 中的元素的引用。mymap 在关键 key.

  3. 如果 key 还没有 mymap, mymap[key] 默认情况下,在 key 然后返回对它的引用。

  4. mymap[key]++ 中的元素递增。mymap 在关键 key. 上面的规则仍然有效:如果 key 还没有 mymap那么一个元素的默认构造是 mymap 在关键 key的值,然后递增。

  5. myvec.push_back(mymap[key]) 创建一个在 key,并将其添加到 myvec. 复制的功能如何 push_back 工作。push_back 只在向量的末尾添加元素的副本。上面的规则仍然有效:如果 key 还没有 mymap那么一个元素的默认构造是 mymap 在关键 key,然后复制到 myvec.

  6. numbers[i] 是指 i幺子 std::vector<int> numbers. 如果一个索引中还没有元素,那么Vectors默认不会在该索引中创建元素。相反,访问一个越界索引是未定义的行为。

  7. hash[x] 中的元素的引用。std::unordered_map<int, int> hash 在关键 x. 默认情况下,如上所述,必要时创建。

  8. hash[numbers[i]] 中的元素的引用。hash 在关键 numbers[i]. 如有必要,默认创建同上。

  9. hash[numbers[i]] = i; 设置元素在 hash 在关键 numbers[i] 的值,到 i.

© www.soinside.com 2019 - 2024. All rights reserved.