对map使用find_if()

根据《C++标准程序库》中描述,对于map的find()成员函数,可以用来搜寻拥有某个key的第一个元素,但是不能搜寻持有某特定value的元素。

如果搜寻某特定value,需要使用find_if(),或者循环遍历。

以下示例如何使用find_if():

#include <iostream>
#include <map>
#include <string>
#include <algorithm>

typedef std::map<std::string, int> map_type;

template <class K, class V>
class map_find_func{
private:
	V value;
public:
	map_find_func(const V& v) : 
	  value(v) {
	  }

	  bool operator()(std::pair<const K, V>& elem) {
		return (elem.second == value);
	}
};

int main()
{
	map_type col1;
	col1.insert(std::make_pair("1234", 1));
	col1.insert(std::make_pair("2234", 2));

	map_type::iterator it = std::find_if(col1.begin(), col1.end(), 
		map_find_func<std::string, int>(1));
	if (it != col1.end())
	{
		std::cout << it->first << std::endl;
	}
}



输出结果:
1234
Press any key to continue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值