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