`

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;
}
分享到:
评论

相关推荐

    std map容器用法总结

    std::cout &lt;&lt; "Key: " , Value: " &lt;&lt; pair.second &lt;&lt; std::endl; } ``` 7. **大小和空性**: 使用`size()`检查容器中元素的数量,`empty()`检查是否为空。 ```cpp if (myMap.empty()) { std::cout &lt;&lt; "Map ...

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

    C++ map 根据 value 找 key 的实现 C++ 中的 map 容器提供了根据 key 找 value 的功能,但是如果我们需要根据 value 找到对应的 key 呢?今天,我们将分享两种方法来实现这个功能。 使用 find_if 算法 在 C++ 中...

    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:...

    BCB map使用

    在BCB(Borland C++ Builder)编程环境中,`map`是STL(Standard Template Library,标准模板库)的一部分,用于实现关联容器,它提供了一种映射关系,即通过一个键(key)来访问特定的值(value)。在这个例子中,...

    C++map使用小例子

    std::cout &lt;&lt; "Key: " &lt;&lt; it-&gt;first , Value: " &lt;&lt; it-&gt;second &lt;&lt; std::endl; } ``` 在这个“C++map使用小例子”中,可能包含了一些演示这些操作的代码片段。通过分析和理解这些代码,开发者可以更好地掌握`std:...

    c++版yaml库yaml-cpp

    out &lt;&lt; YAML::Key &lt;&lt; "name" &lt;&lt; YAML::Value ; out &lt;&lt; YAML::Key &lt;&lt; "age" &lt;&lt; YAML::Value ; // ... 添加更多数据 out &lt;&lt; YAML::EndMap; // 结束映射 ``` **4. yaml-cpp高级特性** - **流式API**:除了使用键值对...

    map_use_stru_key.rar_C++ map_map结构体_strukey_strukey key

    std::cout &lt;&lt; "Key: " , " , " , Value: " &lt;&lt; pair.second &lt;&lt; std::endl; } ``` 这将按照我们定义的比较规则顺序输出键值对。 通过这种方式,我们能够使用结构体作为`std::map`的键,以处理更复杂的数据组织...

    map元素映射,正确使用标准模板库

    在C++编程中,`std::map`是一个关联容器,它提供了一种通过键(key)来访问元素的机制,这种机制通常是通过红黑树(Red-Black tree)实现的,保证了插入、查找和删除操作的时间复杂度为O(log n)。本篇文章将深入探讨...

    STL测试程序map的使用方法

    std::cout &lt;&lt; "Key: " &lt;&lt; it-&gt;first , Value: " &lt;&lt; it-&gt;second &lt;&lt; std::endl; } ``` - 下标运算符: ```cpp std::cout &lt;&lt; "Value for key 1: " [1] &lt;&lt; std::endl; ``` 注意,使用下标运算符如果键不存在,会默认...

    STL中map用法详解 STL中map用法详解 STL中map用法详解

    std::cout &lt;&lt; "Key: " &lt;&lt; it-&gt;first , Value: " &lt;&lt; it-&gt;second &lt;&lt; std::endl; } ``` 7. **大小与空判断** 可以使用`size()`函数获取map中的元素数量,`empty()`函数检查map是否为空: ```cpp int count = ...

    基于C++ map中key使用指针问题的详解

    在C++编程中,`std::map`是一个关联容器,它按照键(key)的排序存储元素,每个键值对应一个值(value)。这个容器的主要优势在于它的高效查找能力,通常使用红黑树实现,查找、插入和删除的时间复杂度为O(logN)。...

    iniConfig/ini配置文件解析通用类

    ini文件通常由多个节(Section)组成,每个节包含一组键值对(Key-Value Pairs)。节以方括号([])括起,键值对则以等号(=)分隔。例如: ```ini [Section1] Key1=Value1 Key2=Value2 [Section2] Key3=Value3 ``` 二...

    C++读写ini配置文件

    它由一系列节(Section)组成,每个节内包含若干键值对(Key-Value Pairs)。例如: ``` [Section1] Key1=Value1 Key2=Value2 [Section2] Key3=Value3 ``` 在C++中,我们可以创建一个类来抽象ini文件的操作。这个...

    c++MAP使用类

    std::cout &lt;&lt; "Key: " , Value: " &lt;&lt; pair.second &lt;&lt; std::endl; } ``` 8. **大小和空性检查**: `size`函数返回`map`中的元素数量,`empty`函数检查`map`是否为空。 ```cpp bool isEmpty = myMap.empty(); /...

    数据结构之map的使用方法等

    `value_type` 是 `map` 的成员类型,它实际上是 `pair&lt;const Key, T&gt;` 的同义词,其中 `Key` 表示键的类型,`T` 表示值的类型。这种方法与第一种类似,只是使用了更底层的方式来创建键值对: ```cpp std::map, std:...

    cpp-C哈希映射集合保留插入的顺序

    std::cout &lt;&lt; "Key: " , Value: " &lt;&lt; pair.second &lt;&lt; std::endl; } ``` - 上述代码将按照插入顺序打印键值对。 5. **性能考虑** - 虽然`ordered_map`保持了插入顺序,但其查找效率通常略低于`unordered_map`。...

    stl中map用法详解

    std::cout &lt;&lt; "Key: " &lt;&lt; it-&gt;first , Value: " &lt;&lt; it-&gt;second &lt;&lt; std::endl; } ``` 或者,使用C++11的范围基础循环: ```cpp for (const auto &pair : myMap) { std::cout &lt;&lt; "Key: " , Value: " ...

    map_mon2.rar_C++ map_mon2和稀hcl反应

    std::map&lt;Key, Value&gt; mapName; ``` 这里的`Key`是键的类型,`Value`是值的类型。例如,如果键是字符串(代表化学物质名称),值是整数(代表摩尔数量),声明可能如下: ```cpp std::map&lt;std::string, int&gt; ...

Global site tag (gtag.js) - Google Analytics