C++ 中创建布尔函数

Jinku Hu 2023年10月12日
  1. 将字符串大小比较作为布尔函数实现
  2. 实现布尔函数,如果映射中存在具有特定键的元素,则返回该布尔函数
C++ 中创建布尔函数

本文将介绍如何在 C++ 中创建布尔函数。

将字符串大小比较作为布尔函数实现

布尔函数表示返回 bool 类型值的函数。布尔函数的结构可以和其他函数一样。在下面的例子中,我们实现了一个比较两个字符串大小的函数 isLessString。如果第一个字符串的长度小于第二个字符串的长度,该函数返回 true;否则,返回 false

注意,我们把比较表达式放在 return 关键字之后,以将结果值传回调用函数。

#include <algorithm>
#include <iostream>
#include <iterator>
#include <map>

using std::cout;
using std::endl;
using std::map;
using std::string;

bool isLessString(string &s1, string &s2) { return s1.size() < s2.size(); }

int main() {
  string str1 = "This string shall be arbitrary";
  string str2 = "Let this string be compared compared";

  if (isLessString(str1, str2)) cout << "str1 is shorter than str2";
  cout << endl;

  return EXIT_SUCCESS;
}

输出:

str1 is shorter than str2

实现布尔函数,如果映射中存在具有特定键的元素,则返回该布尔函数

以下例子实现了布尔函数,用来查找一个 std::map 容器中是否存在特定键的元素。由于本主题是关于函数返回类型 bool,我们将利用 std::map 中内置的 find 方法,而不是自己实现搜索例程。

find 方法接收一个参数-key,并返回迭代器到相应的元素。如果没有找到指定 key 的元素,则返回 end(past-the-end)迭代器。

我们的 keyExistsInMap 函数接受 mapstring 参数,并从给定的 map 中调用 find 方法。如果调用的返回值不等于 end 迭代器,true 将被传回调用者函数,否则返回 false

#include <algorithm>
#include <iostream>
#include <iterator>
#include <map>

using std::cout;
using std::endl;
using std::map;
using std::string;

bool keyExistsInMap(map<string, string>& m, const string& key) {
  if (m.find(key) != m.end()) {
    return true;
  } else {
    return false;
  }
}

int main() {
  map<string, string> veggy_map = {{
                                       "a",
                                       "Asparagus",
                                   },
                                   {
                                       "b",
                                       "Beetroot",
                                   },
                                   {
                                       "b",
                                       "Bedsetroot",
                                   },
                                   {
                                       "g",
                                       "Ginger",
                                   },
                                   {
                                       "m",
                                       "Melon",
                                   },
                                   {
                                       "p",
                                       "Pumpkin",
                                   },
                                   {
                                       "s",
                                       "Spinach",
                                   }};

  keyExistsInMap(veggy_map, "a") ? cout << "Key exists" << endl
                                 : cout << "Key does not exist\n"
                                        << endl;

  keyExistsInMap(veggy_map, "z") ? cout << "Key exists" << endl
                                 : cout << "Key does not exist\n"
                                        << endl;

  return EXIT_SUCCESS;
}

输出:

Key exists
Key does not exist
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook

相关文章 - C++ Function