- 浏览: 263866 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (153)
- Qt (21)
- C++ (10)
- javascript (8)
- linux (8)
- RTC (1)
- JNI (1)
- Qt 图形 (1)
- Mac Bootcamp (1)
- node.js (3)
- Windows SDK 7.1 (1)
- VS2010 (2)
- linux Tcl 脚本语言 (0)
- Mac (1)
- Clucene VS2013 (1)
- VisualStudio (1)
- golang (12)
- postgresql (5)
- SVN (1)
- VS (2)
- 微信开发 (8)
- html5 (1)
- Win7 (1)
- Office (1)
- redis (1)
- Bootstrap (1)
- nginx (2)
- docker (1)
- xorm (3)
- blender (2)
- linux ec2 (1)
- aws (1)
- 七牛云 (1)
- css (5)
- h2 (1)
- react (2)
- java (2)
- html (2)
- eclipse (1)
- java swing (1)
- webpack (1)
- mysql (5)
- VS2017 (1)
- 网站 (1)
- tomcat spring (1)
- Ant (2)
- sql (1)
- 其它 (1)
- Win10 (1)
- R (1)
- git (1)
- Windows (1)
- ubuntu (2)
- python (3)
- win 11 (1)
- quasar (1)
- github (0)
最新评论
在我锲而不舍的努力下,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;
}
#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;
}
发表评论
-
运行时PyImport_ImportModule或者py::import调用失败, error_already_set
2023-03-24 20:29 315解决方案1: 拷贝python或conda目录下的DLLs和 ... -
返回满足条件的std::vector的子集
2022-01-27 16:39 385c++ 11: std::vector<float& ... -
Qt开发磁盘空间查看器
2021-09-09 10:30 0int main(int argc, char **argv ... -
error LNK2001: unresolved external symbol std::basic_ostream
2021-07-13 17:10 376std标准库都无法链接的话,说明编译运行时不一致。 最后排查是 ... -
C2504: base class undefined
2018-02-28 10:39 1077I found the compiling error &q ... -
Qt Creator配置vs2010编译器和调试器
2014-10-14 00:20 9578(本文系原创,转载请 ... -
CMD_BEGIN(...) & CMD_COMMIT()
2014-04-17 11:43 0#include <QWidget> #inclu ... -
[转载]不定参数个数的C函数
2014-04-15 13:06 0原文地址:http://gqlyxg198 ... -
用typeof和decltype为宏(macro)传递变量的类型信息
2014-04-15 11:56 0#ifdef WIN32 #define typeof dec ... -
fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
2014-04-15 11:42 2502VC编译报这个错误,设工程的两个配置来解决该问题:一个是取消L ... -
typedef 类型的头文件声明
2014-01-22 13:10 1276结论是编译器不支持,不要浪费时间来做这个事情,老老实实地inc ... -
特化与multiple definition及
2013-10-11 18:44 2310程序员已经习惯于将模板类的实现放到头文件里,但是有一些特化类或 ... -
QGraphicsWidget的geometry和boundingRect是什么关系?
2012-12-25 17:08 1552QGraphicsWidget的boundingRect的概念 ...
相关推荐
std::cout << "Key: " , Value: " << pair.second << std::endl; } ``` 7. **大小和空性**: 使用`size()`检查容器中元素的数量,`empty()`检查是否为空。 ```cpp if (myMap.empty()) { std::cout << "Map ...
C++ map 根据 value 找 key 的实现 C++ 中的 map 容器提供了根据 key 找 value 的功能,但是如果我们需要根据 value 找到对应的 key 呢?今天,我们将分享两种方法来实现这个功能。 使用 find_if 算法 在 C++ 中...
std::map<std::string, std::map<std::string, std::string>> _data; public: int32_t readInteger(std::string section, std::string key, int32_t defaultValue); float readFloat(std::string section, std:...
在BCB(Borland C++ Builder)编程环境中,`map`是STL(Standard Template Library,标准模板库)的一部分,用于实现关联容器,它提供了一种映射关系,即通过一个键(key)来访问特定的值(value)。在这个例子中,...
std::cout << "Key: " << it->first , Value: " << it->second << std::endl; } ``` 在这个“C++map使用小例子”中,可能包含了一些演示这些操作的代码片段。通过分析和理解这些代码,开发者可以更好地掌握`std:...
out << YAML::Key << "name" << YAML::Value ; out << YAML::Key << "age" << YAML::Value ; // ... 添加更多数据 out << YAML::EndMap; // 结束映射 ``` **4. yaml-cpp高级特性** - **流式API**:除了使用键值对...
std::cout << "Key: " , " , " , Value: " << pair.second << std::endl; } ``` 这将按照我们定义的比较规则顺序输出键值对。 通过这种方式,我们能够使用结构体作为`std::map`的键,以处理更复杂的数据组织...
在C++编程中,`std::map`是一个关联容器,它提供了一种通过键(key)来访问元素的机制,这种机制通常是通过红黑树(Red-Black tree)实现的,保证了插入、查找和删除操作的时间复杂度为O(log n)。本篇文章将深入探讨...
std::cout << "Key: " << it->first , Value: " << it->second << std::endl; } ``` - 下标运算符: ```cpp std::cout << "Value for key 1: " [1] << std::endl; ``` 注意,使用下标运算符如果键不存在,会默认...
std::cout << "Key: " << it->first , Value: " << it->second << std::endl; } ``` 7. **大小与空判断** 可以使用`size()`函数获取map中的元素数量,`empty()`函数检查map是否为空: ```cpp int count = ...
在C++编程中,`std::map`是一个关联容器,它按照键(key)的排序存储元素,每个键值对应一个值(value)。这个容器的主要优势在于它的高效查找能力,通常使用红黑树实现,查找、插入和删除的时间复杂度为O(logN)。...
ini文件通常由多个节(Section)组成,每个节包含一组键值对(Key-Value Pairs)。节以方括号([])括起,键值对则以等号(=)分隔。例如: ```ini [Section1] Key1=Value1 Key2=Value2 [Section2] Key3=Value3 ``` 二...
它由一系列节(Section)组成,每个节内包含若干键值对(Key-Value Pairs)。例如: ``` [Section1] Key1=Value1 Key2=Value2 [Section2] Key3=Value3 ``` 在C++中,我们可以创建一个类来抽象ini文件的操作。这个...
std::cout << "Key: " , Value: " << pair.second << std::endl; } ``` 8. **大小和空性检查**: `size`函数返回`map`中的元素数量,`empty`函数检查`map`是否为空。 ```cpp bool isEmpty = myMap.empty(); /...
`value_type` 是 `map` 的成员类型,它实际上是 `pair<const Key, T>` 的同义词,其中 `Key` 表示键的类型,`T` 表示值的类型。这种方法与第一种类似,只是使用了更底层的方式来创建键值对: ```cpp std::map, std:...
std::cout << "Key: " , Value: " << pair.second << std::endl; } ``` - 上述代码将按照插入顺序打印键值对。 5. **性能考虑** - 虽然`ordered_map`保持了插入顺序,但其查找效率通常略低于`unordered_map`。...
std::cout << "Key: " << it->first , Value: " << it->second << std::endl; } ``` 或者,使用C++11的范围基础循环: ```cpp for (const auto &pair : myMap) { std::cout << "Key: " , Value: " ...
std::map<Key, Value> mapName; ``` 这里的`Key`是键的类型,`Value`是值的类型。例如,如果键是字符串(代表化学物质名称),值是整数(代表摩尔数量),声明可能如下: ```cpp std::map<std::string, int> ...