使用map的find头文件_C++ map 根据value找key的实现

flyfish

测试所需头文件

#include

#include

#include

#include

初始

std::map t;

t.insert(std::make_pair(1, "a"));

t.insert(std::make_pair(2, "b"));

t.insert(std::make_pair(3, "c"));

t.insert(std::make_pair(4, "d"));

根据key 找 value

std::string s = "";

auto it = t.find(2);

if (it != t.end())

{

s = (*it).second;

}

根据value 找key lambda方式

std::string s = "c";

auto find_item = std::find_if(t.begin(), t.end(),

[s](const std::map::value_type item)

{

return item.second == s;

});

int n = 0;

if (find_item!= t.end())

{

n = (*find_item).first;

}

根据value 找key 函数对象方式

class finder

{

public:

finder(const std::string &cmp_string) :s_(cmp_string){}

bool operator ()(const std::map::value_type &item)

{

return item.second == s_;

}

private:

const std::string &s_;

};

//调用

int n = 0;

auto it = std::find_if(t.begin(), t.end(), finder("d"));

if (it != t.end())

{

n = (*it).first;

}

以上这篇C++ map 根据value找key的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持云海天教程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: unordered_map是C++ STL中的一个关联容器,用于存储键值对。它的特点是无序,即不会按照键的顺序进行存储。unordered_map的底层实现是哈希表,因此它的查、插入、删除等操作都具有较高的效率。 使用unordered_map需要包含文件<unordered_map>。创建一个unordered_map对象可以使用以下语法: unordered_map<key_type, value_type> map_name; 其中,key_type是键的类型,value_type是值的类型,map_name是unordered_map对象的名称。例如,创建一个存储字符串和整数的unordered_map对象可以使用以下语法: unordered_map<string, int> my_map; 向unordered_map中插入元素可以使用insert()函数,例如: my_map.insert(make_pair("apple", 3)); 这行代码将一个键为"apple",值为3的键值对插入到my_map中。也可以使用以下语法: my_map["apple"] = 3; 这行代码也可以实现同样的功能。 从unordered_map中查元素可以使用find()函数,例如: auto it = my_map.find("apple"); if (it != my_map.end()) { cout << "The value of apple is " << it->second << endl; } 这段代码将查键为"apple"的元素,并输出它的值。如果不到,find()函数将返回unordered_map的end()迭代器。 从unordered_map中删除元素可以使用erase()函数,例如: my_map.erase("apple"); 这行代码将删除键为"apple"的元素。 unordered_map还提供了其他一些常用的函数,例如size()、empty()、clear()等。需要注意的是,unordered_map中的元素是无序的,因此遍历unordered_map时,元素的顺序是不确定的。 ### 回答2: unordered_map是C++ STL中的一种容器,提供了一种基于键值对的快速查机制。和map类似,但是不会对键值对进行特定的排序,因此查速度更快,具有更好的性能。unordered_map使用非常简单,可以使用标准库中的文件<unordered_map>来引用。 unordered_map容器支持以下主要操作: 1.插入:insert unordered_map容器中的insert函数可以插入一个键值对,如果键已经存在,则会覆盖该键对应的值。示例如下: ```C++ std::unordered_map<std::string, int> map; map.insert(std::make_pair("apple", 5)); map.insert(std::make_pair("orange", 10)); map["banana"] = 8; ``` 2.查:find unordered_map容器中的find函数可以在容器中查指定键的值,如果到了,则返回一个指向该键值对的迭代器,否则返回end()迭代器。示例如下: ```C++ auto iter = map.find("apple"); if (iter != map.end()) { std::cout << "apple: " << iter->second << std::endl; } else { std::cout << "not found" << std::endl; } ``` 3.删除:erase unordered_map容器中的erase函数可以删除指定键值对,示例如下: ```C++ auto iter = map.find("apple"); if (iter != map.end()) { map.erase(iter); } ``` 4.遍历:使用迭代器进行遍历 unordered_map容器可以使用迭代器对容器进行遍历,示例如下: ```C++ for (auto iter = map.begin(); iter != map.end(); ++iter) { std::cout << iter->first << ": " << iter->second << std::endl; } ``` 总的来说,unordered_map是一个非常实用的容器,可以在大部分需要进行快速查、插入、删除的场景中使用。然而,由于unordered_map使用哈希表实现的,因此在存储大量数据时,需要注意哈希表的负载因子,以及散列函数的效率等问题。 ### 回答3: unordered_map是C++ STL(标准模板库)中的一部分,提供了一种基于关键字查和快速插入的数据结构。与map不同的是,unordered_map使用哈希表实现,使得它能够在O(1)时间内完成插入和查操作,这使得unordered_map成为处理大量数据并需要快速查的场景下的一种不错的选择。 unordered_map的定义与其他容器类似,例如: ``` cpp #include <iostream> #include <unordered_map> using namespace std; int main() { unordered_map<string, int> m; m["apple"] = 2; m["banana"] = 4; m["orange"] = 8; cout << "The price of banana is " << m["banana"] << endl; return 0; } ``` 上述代码中,我们使用了unordered_map存储了一些水果的名称和对应的价格。m["apple"] = 2; 中的"apple"是我们要存储的关键字,而2则是对应的值。这段代码中,我们也访问了map中的元素,m["banana"]将返回我们初始化时所设置的值4,如果某个键不存在,则会自动创建并分配默认值或抛出异常,这一点与map中的使用方式相同。 在实际使用中,unordered_map有以下一些常见的操作: 1. 插入元素 ```cpp unordered_map<string, int> m; m["apple"] = 2; ``` 2. 查元素 ```cpp unordered_map<string, int> m; m["apple"] = 2; cout << "The price of apple is " << m["apple"] << endl; ``` 3. 删除元素 ```cpp unordered_map<string, int> m; m["apple"] = 2; m.erase("apple"); ``` 除了上述操作,unordered_map还支持一些其他的方法,例如: - size()方法,返回unordered_map容器中元素个数 - empty()方法,判断unordered_map容器是否为空 - find(key)方法,返回值为指向匹配关键字的元素迭代器,如果没有则返回尾部迭代器 - clear()方法,清除unordered_map中所有的元素 总之,unordered_map是一个非常方便实用的STL容器,能够快速地查询和插入数据,针对大量数据和快速查询的场景下,unordered_map使用是非常值得考虑的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值