21xrx.com
2024-09-20 00:21:24 Friday
登录
文章检索 我的文章 写文章
C++ Map的Find函数详解
2023-07-02 05:57:18 深夜i     --     --
C++ Map Find函数 详解

C++ Map是一种关联容器,它提供了一种在键和值之间自动建立映射关系的机制。Map的Find函数是其中非常重要的一个函数,它可以用来查找特定键所对应的值。

Map的Find函数定义如下:


iterator find(const key_type& key);

该函数接收一个键作为参数,并返回一个指向该键所对应的值的迭代器。如果找不到该键,则返回一个指向Map末尾的迭代器。

下面是一个简单的示例:


#include <iostream>

#include <map>

int main() {

  std::map<std::string, int> mymap;

  mymap["one"] = 1;

  mymap["two"] = 2;

  mymap["three"] = 3;

  auto it = mymap.find("two");

  if (it != mymap.end())

    std::cout << "Found: " << it->first << " -> " << it->second << std::endl;

   else

    std::cout << "Not found" << std::endl;

  

  it = mymap.find("four");

  if (it != mymap.end())

    std::cout << "Found: " << it->first << " -> " << it->second << std::endl;

   else

    std::cout << "Not found" << std::endl;

  

  return 0;

}

这个示例首先创建了一个Map,并将一些键值对存储进去。随后,它调用Find函数来查找两个键并打印结果。

在第一个Find调用中,它查找键"two"。由于该键存在于Map中,Find函数会返回一个指向该键对应的值的迭代器。因此,该函数打印出"Found: two -> 2"。

而在第二个Find调用中,它查找键"four"。由于该键不存在于Map中,Find函数会返回一个指向Map末尾的迭代器。因此,该函数打印出"Not found"。

需要注意的是,在使用Find函数时,通常会将返回的迭代器与Map的end()函数所返回的迭代器进行比较,以判断是否成功查找到对应的值。另外,由于Map是一个有序容器,`std::map::find`函数的时间复杂度为log(n)。如果需要在无序容器中查找元素更适合使用`std::unordered_map`中的`std::unordered_map::find`函数,时间复杂度为O(1)。

总之,C++ Map的Find函数是非常实用的一个函数,它可以用来在Map中查找特定键所对应的值,帮助我们更加方便地使用Map容器。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复