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