`

std::map由value反求key的模板函数

    博客分类:
  • C++
阅读更多
在我锲而不舍的努力下,std::map由value反求key的模板函数终于出炉了:使用时一定要把map的具现类型也传进去,想琢磨去掉这个模板参数的同学不信就试试,一定会死的很难看的。
#include <algorithm>
template <class K, class V>
class value_equals//本模板类来自于<The C++ Standard Library>
{
  private:
    V value;
  public:
    // constructor (initialize value to compare with)
    value_equals (const V& v) : value(v) {}
    // comparison
    bool operator() (pair<const K, V> elem)
    {
        return elem.second == value;
    }
};

template <typename K,typename V,typename Map>
K FindKeyByValue(const Map& m, const V& v)//本模板函数由johnsmith9th原创,引用请注明来自于http://johnsmith9th.iteye.com
{
    typename Map::const_iterator pos = find_if(m.begin(),m.end(), value_equals<K,V>(v));
    if (pos != m.end())
    {
        return pos->first;
    }
    K defaultKeyValue;
    return defaultKeyValue;
}
分享到:
评论

相关推荐

    ini 文件操作

    std::map&lt;std::string, std::map&lt;std::string, std::string&gt;&gt; _data; public: int32_t readInteger(std::string section, std::string key, int32_t defaultValue); float readFloat(std::string section, std:...

    C++ map 根据value找key的实现

    flyfish 测试所需头文件 #include #include #include &lt;map&gt; #include 初始 std::map&lt;int&gt; t;... t.insert(std::make_pair(1, "a"));... t.insert(std::make_pair(2, "b"));...根据key 找 value std::string s = "

    无顺序 map c++ vs2010-vs2022都可以编译的 版本

    c++ 无序map 及使用,vs可以编译。 tsl::ordered_map, int&gt; map = { {'d', 1}, {'a', 2}, {'g', 3} };... std::cout &lt;&lt; "{" &lt;&lt; key_value.first , " &lt;&lt; key_value.second &lt;&lt; "}" &lt;&lt; std::endl; }

    A tiny JSON library for C++11.

    A Json object represents any JSON value: null, bool, number (int or double), string (std::string), array (std::vector), or object (std::map). Json objects act like values. They can be assigned, ...

    C++标准模板库map的常用操作

    map是STL的关联式容器,以key-value的形式存储,以红黑树(平衡二叉查找树)作为底层数据结构,对数据有自动排序的功能。 命名空间为std,所属头文件&lt;map&gt; 注意:不是&lt;map&gt; 二:常用操作 容量: a.map中实际数据的数据...

    c#源码转java源码的-json11:适用于C++11的微型JSON库

    c#原始码转Java原始码的json11 json11是用于C ++ 11的微型JSON库,提供JSON解析和序列化。 该库提供的核心对象是json11 :: Json。 Json对象代表任何JSON值:null,bool,数字...还有一些隐式构造函数,可将标准类型

    分享C++面试中string类的一种正确写法

    (用作 std::map 的 key_type 是更进一步的要求,本文从略)。 换言之,你的 String 能让以下代码编译运行通过,并且没有内存方面的错误。 代码如下:void foo(String x) { } void bar(const String& x) { } ...

    深入了解C++中map用法

    * Map的特点: 1、存储Key-value对 * 2、支持快速查找,查找的复杂度基本是Log(N) * 3、快速插入,快速删除,快速修改记 * /************************************************************************/ #include #...

    vim插件打包

    let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"] " 自动关闭补全窗口 au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif set completeopt=menuone,menu,longest set nocp "} "}}...

    红黑树可运行代码C++ 使用无父指针的节点构造

    C++实现仅有孩子节点的红黑树 在旋转时用栈存储叔叔父亲祖先等等。...using namespace std; #define RefValue -1e8 #define red 0 #define black 1 template struct RBNode { bool color; K key; E data; RBN

    Google C++ Style Guide(Google C++编程规范)高清PDF

    Table of Contents Header Files The #define Guard Header File Dependencies Inline Functions The -inl.h Files Function Parameter Ordering Names and Order of Includes Scoping Namespaces Nested Classes ...

    Delphi2010皮肤控件AlphaControls6.21FS

    Default value of the SkinProvider.MakeSkinMenu property was changed to False (all projects must be checked and updated if required) * Solved problems in Magnifier and AlphaControls color dialog that...

    Microsoft Library MSDN4DOS.zip

    CHAPTER 7 PASSING BY REFERENCE OR VALUE CHAPTER 8 NUMERICAL, LOGICAL, AND STRING DATA CHAPTER 9 SPECIAL DATA TYPES Index Microsoft Codeview and Utilities User's Guide Table of Contents Introduction ...

Global site tag (gtag.js) - Google Analytics