map按value值查找——find_if的使用(转载)

转载:http://www.cnblogs.com/xufeiyang/archive/2012/05/09/2491871.html

CValueFind

 1 #ifndef _CVALUEFIND_H_
 2 #define _CVALUEFIND_H_
 3 #include <string>
 4 #include <algorithm>
 5 #include <map>
 6
 7
 8 class map_value_finder
 9 {
10 public:
11     map_value_finder(const std::string &cmp_string):m_s_cmp_string(cmp_string){}
12     bool operator ()(const std::map<int, std::string>::value_type &pair)
13     {
14         return pair.second == m_s_cmp_string;
15     }
16 private:
17     const std::string &m_s_cmp_string;
18 };
19 #endif

main

#include <iostream>
#include <windows.h>
#include <vector>
#include "CValueFind.h"
using namespace std;
//map按value值查找——find_if的使用

int main()
{
    std::map<int, std::string> my_map;
    my_map.insert(std::make_pair(10, "china"));
    my_map.insert(std::make_pair(20, "usa"));
    my_map.insert(std::make_pair(30, "english"));
    my_map.insert(std::make_pair(31, "english"));
    my_map.insert(std::make_pair(32, "english"));
    my_map.insert(std::make_pair(33, "english"));
    my_map.insert(std::make_pair(34, "english"));
    my_map.insert(std::make_pair(35, "english"));
    my_map.insert(std::make_pair(36, "english"));
    my_map.insert(std::make_pair(37, "english"));
    my_map.insert(std::make_pair(38, "english"));
    my_map.insert(std::make_pair(39, "english"));
    my_map.insert(std::make_pair(40, "hongkong")); 

    std::map<int, std::string>::iterator it = my_map.end();
    it = std::find_if(my_map.begin(), my_map.end(), map_value_finder("english"));
    if (it == my_map.end())
        printf("not found\n");
    else
    {
        printf("found key:%d value:%s\n", it->first, it->second.c_str());
    }
    getchar();

    return 0;
}
时间: 2024-11-05 02:38:25

map按value值查找——find_if的使用(转载)的相关文章

STL map 按key值和按value值排序

map是用来存放<key, value>键值对的数据结构,能够非常方便高速的依据key查到对应的value. 假如存储水果和其单位价格.我们用map来进行存储就是个不错的选择. 我们这样定义.map<string, double>.当中水果用string类型.作为Key:该水果的单位价格用double类型,作为value. 这样一来,我们能够依据水果名高速的查找到价格. 我们不仅要将水果和相应的价格输出,还想知道依照价格高低进行排序的结果. 换句话说,我们希望可以对map进行按Ke

Java中Map相关的快速查找算法与唯一性(转载)

原文地址:http://blog.csdn.net/chuyuqing/article/details/19629229 在对<Set和hashCode()>的一篇原创文章写完后,由于对自己的一些论断产生了模糊和怀疑,因此又对Set进行了一些研究,形成本篇. 在Set的使用场景中,我们不外乎看中了她存储数据的唯一性,即不能存储重复值,这在某些应用场合下是很必要的一个特性.那么从更深一层来考虑,Set究竟如何使数据不重复的呢?从另一个层面来考虑,她又如何确保在验证数据是否重复过程中的快速性呢?假

【题解】邻值查找 [CH1301]

[题解]邻值查找 [CH1301] 传送门:邻值查找 \([CH1301]\) \([AcWing136]\) [题目描述] 给定一个长度为 \(n\) 的序列 \(A\),\(A\) 中的数各不相同. \(\forall i \in[2,n]\) 求 \(min _{j=1}^{j<i}|A_i?A_j|\) 取得最小值时的 \(j\).若最小值点不唯一,则选择 \(A_j\) 值较小的那个. [样例] 样例输入: 3 1 5 3 样例输出: 4 1 2 1 [数据范围] \(100\%\)

js 定义像java一样的map方便取值

js 定义像java一样的map方便取值. 百度有位大神说"js对象本身就是一种Map结构",这真是一段让人欢天喜地的代码. <script> //定义一个全局map var map = {}; var key0 = '0'; var key1 = '1'; map[key0] = '0-真实报文'; map[key1] = '1-虚拟报文'; //row 获取这行的值 ,index 获取索引值 function testJsMap(key){ //如果遍历map for(

查找(哨兵查找、二分查找、差值查找)

#include <iostream> using namespace std; #define N 10 int fib(int n) { if(n == 0) { return 0; } else if(n == 1) { return 1; } else { return (fib(n-1) + fib(n-2)); } } //普通查找: int sequenctial_Search(int *a,int n,int key) { int i; a[0] = key; i = n; w

二分查找的改进--差值查找

差值查找 在二分查找中,我们每次比较都可以排除一半的数据量,这个已经是很高效了.如果利用关键字本身的信息,每次排除的数据量充分依赖于关键字的大小,则查找会更高效,这就是差值查找的思想. 下面通过示例代码,比较二分查找和差值查找的不同,在不同中领略差值查找的改良之处. #include <stdio.h> #include <stdlib.h> int InterSearch(int *array, int n, int key) { if (array && n &

java map按照value值来比较大小并且返回最终结果

代码下载地址:http://www.zuidaima.com/share/1830834176347136.htm 原文:java map按照value值来比较大小并且返回最终结果 package com.zuidaima.util; import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.TreeMap; public class ValueComparator

Java集合篇六:Map中key值不可重复的测试

package com.test.collection; import java.util.HashMap; import java.util.Map; //Map中key值不可重复的测试 public class TestEquals { public static void main(String[] args) { String s1=new String("abc"); String s2=new String("abc"); Map map=new Has

Map 遍历取值及jstl的取值

Map 遍历取值及jstl的取值 学习了:http://blog.csdn.net/yanjiaye520/article/details/17354239 1.Java map的便利取值 Java代码 收藏代码 Map<String,String> map = new HashMap<String,String>(); map.put("key1", "value1"); map.put("key2", "va