Loading

C++中map以及hash的是使用

在刷题的过程中,遇到的问题,那题目来举例子:

力扣第一题: 两数之和
https://leetcode-cn.com/problems/two-sum/

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int> hashtable;
		//第一个是数组中的值,第二个是下标。
        for (int i = 0; i < nums.size(); ++i) {
            auto it = hashtable.find(target - nums[i]);
            if (it != hashtable.end()) {
                return {it->second, i};
            }
            hashtable[nums[i]] = i;
        }
        return {};
    }
};

这是官方题解,但是我没有使用过map和hash,有许多代码并不明白

find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。
c++ 里面的map容器的迭代器里面 有个first 和 second
例如:
map<string, int> m;
m["one"] = 1;
map<string, int>::iterator p = m.begin();
p->first; // 这个是 string 值是 "one"
p->second; //这个是 int 值是 1

posted @ 2021-09-28 14:03  Zhbeii  阅读(74)  评论(0编辑  收藏  举报