21xrx.com
2024-12-22 21:24:38 Sunday
登录
文章检索 我的文章 写文章
C++ Map的查找技巧
2023-07-02 03:21:40 深夜i     --     --
C++ Map 查找 技巧 迭代器

C++ Map是一个非常有用的数据结构,它可以存储键值对,并提供快速的查找功能。在使用Map时,需要掌握一些查找技巧,以提高代码的效率和可读性。以下是一些常用的Map查找技巧。

1. 使用find函数

Map的find函数可以通过关键字查找Map中的对应值。示例如下:


std::map<std::string, int> mymap = {"apple", 20, 30};

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

if (it != mymap.end()) {

  std::cout << it->second << '\n';

} else {

  std::cout << "Key not found\n";

}

该示例中,我们通过find函数查找Map中关键字为"banana"的值,如果找到,则输出对应值20,否则输出"Key not found"。

2. 使用count函数

Map的count函数可以用于检查某个关键字是否存在Map中。示例如下:


std::map<std::string, int> mymap = {"apple", 20, "orange"};

if (mymap.count("banana")) {

  std::cout << "Key exists\n";

} else {

  std::cout << "Key does not exist\n";

}

该示例中,我们通过count函数检查Map中是否存在关键字为"banana"的值,如果存在,则输出"Key exists",否则输出"Key does not exist"。

3. 使用lower_bound和upper_bound函数

Map的lower_bound函数返回一个迭代器,指向第一个大于等于给定关键字的元素;而upper_bound函数返回一个迭代器,指向第一个大于给定关键字的元素。示例如下:


std::map<int, std::string> mymap = { "apple", 2, "orange", 4};

auto it1 = mymap.lower_bound(2);

auto it2 = mymap.upper_bound(3);

for (auto it = it1; it != it2; ++it) {

  std::cout << it->first << ' ' << it->second << '\n';

}

该示例中,我们使用lower_bound函数查找第一个关键字大于等于2的元素,使用upper_bound函数查找第一个关键字大于3的元素,并输出它们之间的所有元素。

4. 使用equal_range函数

Map的equal_range函数返回一个pair对象,包含两个迭代器,分别指向第一个大于等于给定关键字的元素和第一个大于给定关键字的元素。示例如下:


std::map<int, std::string> mymap = { "apple", "banana", "orange", 4};

auto range = mymap.equal_range(2);

for (auto it = range.first; it != range.second; ++it) {

  std::cout << it->first << ' ' << it->second << '\n';

}

该示例中,我们使用equal_range函数查找关键字为2的元素,并输出它们的所有匹配项。

总之,掌握C++ Map的查找技巧可以帮助我们更高效地使用Map,提高程序效率和可读性。以上是一些常用的技巧,需要根据实际情况选择适合的方法。

  
  

评论区

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