C++ map

利用C++ map寻找和是特定值的两数,注意点:

  1. map 的遍历需定义iterator

  2. map.find查找空间是数值对儿的第一个元素值组成的数据空间;返回的iterator对象的数值顺序与定义顺序相同,用iterator->first,iterator->second表示;判断是否查找到特定值的条件是返回的iterator是否等于map.end()

  3. map.insert插入键值对pair<type1,type2>(value1,value2)或者make_pair(value1,value2)或者{value1,value2}

  4. 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");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值