unordered_map<int,int> Hashmap的遍历
时间: 2023-07-09 13:23:40 浏览: 173
遍历`unordered_map<int,int>`可以通过迭代器实现,具体的代码如下所示:
```c++
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map<int, int> hashmap = {{1, 2}, {3, 4}, {5, 6}};
// 使用迭代器遍历
for (auto iter = hashmap.begin(); iter != hashmap.end(); ++iter) {
cout << "Key: " << iter->first << " Value: " << iter->second << endl;
}
return 0;
}
```
其中,`unordered_map`的迭代器类型为`unordered_map<int,int>::iterator`。通过`begin()`和`end()`函数可以获取起始迭代器和结束迭代器。在循环中,通过迭代器访问键值对的键和值,分别通过`iter->first`和`iter->second`获取。
相关问题
cpp中创建一个哈希表unordered_map<int, int>存储vector<int>数组nums的值nums[i]和小标i
可以使用如下代码创建一个unordered_map<int, int>,并将nums数组中的值和下标存储到哈希表中:
```cpp
#include <unordered_map>
#include <vector>
using namespace std;
unordered_map<int, int> hashmap;
vector<int> nums = {1, 2, 3, 4, 5};
for(int i = 0; i < nums.size(); i++) {
hashmap[nums[i]] = i;
}
```
上述代码中,我们首先包含了unordered_map和vector两个头文件。然后创建了一个名为hashmap的unordered_map<int, int>,并创建了一个名为nums的vector<int>数组。
接下来,我们使用for循环遍历nums数组中的所有元素,将每个元素的值作为哈希表中的键,将元素的下标作为哈希表中的值。最后,我们就可以通过哈希表中的键来快速查找元素在nums数组中的下标了。
vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> res; sort(nums.begin(),nums.end()); if(nums.size()<3) return res; int len=nums.size(); for(int i=0;i<len;i++){ for(int j=i+1;j<len;j++){ for(int k=j+1;k<len;k++){ if(nums[i]+nums[j]+nums[k]==0){ vector<int> tmp={nums[i],nums[j],nums[k]}; res.push_back(tmp); } } } }修改代码 使用hashmap去重
你可以使用哈希表来去重。以下是修改后的代码:
```cpp
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> res;
sort(nums.begin(), nums.end());
int len = nums.size();
for (int i = 0; i < len - 2; i++) {
if (i > 0 && nums[i] == nums[i - 1]) continue; // 去重
unordered_map<int, int> hash; // 使用哈希表记录已经遍历过的数
for (int j = i + 1; j < len; j++) {
int target = -nums[i] - nums[j];
if (hash.count(target) > 0) {
vector<int> tmp = {nums[i], nums[j], target};
res.push_back(tmp);
while (j + 1 < len && nums[j] == nums[j + 1]) j++; // 去重
}
hash[nums[j]] = j;
}
}
return res;
}
```
这样修改后的代码会使用哈希表来记录已经遍历过的数,以避免重复计算相同的组合。同时,也添加了一些额外的条件来进行去重操作。
阅读全文