利用C++ map寻找和是特定值的两数,注意点:
-
map 的遍历需定义iterator
-
map.find查找空间是数值对儿的第一个元素值组成的数据空间;返回的iterator对象的数值顺序与定义顺序相同,用iterator->first,iterator->second表示;判断是否查找到特定值的条件是返回的iterator是否等于map.end()
-
map.insert插入键值对
pair<type1,type2>(value1,value2)
或者make_pair(value1,value2)
或者{value1,value2}
-
map的遍历
map<int, int> myMap = { { 1, 2 }, {2,3} }; myMap.insert({ 3, 4 }); myMap.insert({ 1, 5 });//不执行 map<int, int>::iterator iter = myMap.begin(); for (; iter != myMap.end(); iter++){ cout << iter->first << " " << iter->second << " "; cout << endl; } //结果 1 2 /n 2 3 /n 3 4
#include<vector>
#include<iostream>
#include<map>
using namespace std;
vector<int> twoSum(vector<int>& nums, int target) {
map<int, int> myMap;
map<int, int>::iterator iter;
vector<int> myVec;
for (int i = 0; i<nums.size(); i++){
int tar = target - nums[i];
iter = myMap.find(tar);
if (iter != myMap.end()){
cout << i << " " << endl;
myVec.push_back(i);
myVec.push_back(iter->second);
}
myMap.insert(pair<int, int>(nums[i], i));
}
return myVec;
}
void main()
{
vector<int> nums = { 2, 7, 11, 5 };
vector<int> result;
int target = 9;
result=twoSum(nums, target);
for (int i = 0; i < result.size(); i++)
{
cout << result[i] << " ";
}
system("pause");
}