对于 std::map
、std::unordered_map
、std::multimap
和 std::unordered_multimap
这些关联容器,它们的 find
成员函数都是用来查找键(key)的。当你调用 find
方法并传递一个值作为参数时,你是在查找具有该键值的元素。
如果找到了匹配的键,find
方法会返回一个指向该元素的迭代器。如果未找到匹配的键,find
方法会返回一个指向容器“尾后”(past-the-end)位置的迭代器,这通常与 end()
成员函数返回的迭代器相同。
俩数相加
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int>ans;
for(int i=0;i<nums.size();i++){
int s=target-nums[i];
auto a= ans.find(s);
if(ans.find(s)!=ans.end()){
return {a->second,i};
}
else ans.insert(make_pair(nums[i],i));
}
return {};
}
};
字母异位置分词
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string,vector<string>>m;
for(int i=0;i<strs.size();i++){
string str=strs[i];
sort(str.begin(),str.end());
m[str].push_back(strs[i]);
}
vector<vector<string>>ans;
for(auto it=m.begin();it!=m.end();it++){
ans.push_back((*it).second);
}
return ans;
}
};