std::map::find

来自cppreference.com
< cpp‎ | container‎ | map
iterator find( const Key& key );
(1)
const_iterator find( const Key& key ) const;
(2)
template< class K > iterator find( const K& x );
(3) (C++14 起)
template< class K > const_iterator find( const K& x ) const;
(4) (C++14 起)
1,2) 寻找拥有等于 key 的关键的元素。
3,4) 寻找拥有比较等价于值 x 的关键的元素。此重载仅若若有限定 id Compare::is_transparent 合法且指代一个类型才参与重载决议。允许调用此函数而无需构造 Key 的实例。

目录

[编辑] 参数

key - 要搜索的元素关键值
x - 能通透地与关键比较的任何类型值

[编辑] 返回值

指向关键等于 key 的元素的迭代器。若找不到这种元素,则返回尾后(见 end() )迭代器。

[编辑] 复杂度

与容器大小成对数。

[编辑] 示例

#include <iostream>
#include <map>
 
int main()
{  
    std::map<int,char> example = {{1,'a'},{2,'b'}};
 
    auto search = example.find(2);
    if(search != example.end()) {
        std::cout << "Found " << search->first << " " << search->second << '\n';
    }
    else {
        std::cout << "Not found\n";
    }
}

输出:

Found 2 b

[编辑] 参阅

返回匹配特定键的元素数量
(公开成员函数) [编辑]
返回匹配特定键的元素范围
(公开成员函数) [编辑]

[编辑] 示例

演示通过 operator [] 访问不存在元素的风险。

#include <string>
#include <iostream>
#include <map>
 
int main()
{
    std::map<std::string,int> my_map;
    my_map["x"] =  11;
    my_map["y"] = 23;
 
    auto it = my_map.find("x");
    if (it != my_map.end()) std::cout << "x: " << it->second << "\n";
 
    it = my_map.find("z");
    if (it != my_map.end()) std::cout << "z1: " << it->second << "\n";
 
    // 访问不存在元素会创建它
    if (my_map["z"] == 42) std::cout << "Oha!\n";
 
    it = my_map.find("z");
    if (it != my_map.end()) std::cout << "z2: " << it->second << "\n";
}

输出:

x: 11
z2: 0