Use funções void em C++

Jinku Hu 12 outubro 2023
  1. Use a função void para descobrir qual string é mais longa
  2. Use a função void para descobrir se a chave existe em um mapa
  3. Use a função void para classificar os elementos no vetor
Use funções void em C++

Este artigo demonstrará vários métodos sobre como usar funções void em C++.

Use a função void para descobrir qual string é mais longa

As funções que não têm valor de retorno têm o tipo void especificado como o parâmetro de retorno. Em funções void, a instrução implícita return é chamada após a última instrução do corpo da função. Observe que a instrução return explícita pode ser colocada no corpo da função void, onde o fluxo de controle precisa ser movido para a função do chamador imediatamente. No exemplo a seguir, a função isLessString contém a única instrução condicional para imprimir as strings correspondentes no console, e o return implícito é executado depois dela.

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

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

void isLessString(string &s1, string &s2) {
  s1.size() < s2.size() ? cout << "string_1 is shorter than string_2" << endl
                        : cout << "string_2 is shorter than string_1" << endl;
}

int main() {
  string str1 = "This string has arbitrary contents";
  string str2 = "Another string with random contents";

  isLessString(str1, str2);

  return EXIT_SUCCESS;
}

Resultado:

string_1 is shorter than string_2

Use a função void para descobrir se a chave existe em um mapa

Neste caso, a função void é utilizada para implementar a função de busca de chave para o contêiner std::map. Observe que o resultado é comunicado pela impressão da constante de string correspondente no fluxo cout. Embora este não seja o método preferido para passar os dados internamente no programa, ele pode ser usado para indicar informações ao usuário final.

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

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

void keyExistsInMap(map<string, string>& m, const string& key) {
  m.find(key) != m.end() ? cout << "Key exists in a map" << endl
                         : cout << "Key does not exist in a map" << endl;
}

int main() {
  map<string, string> veggy_map = {{
                                       "a",
                                       "Ali",
                                   },
                                   {
                                       "m",
                                       "Malvo",
                                   },
                                   {
                                       "p",
                                       "Pontiac",
                                   },
                                   {
                                       "s",
                                       "Sensi",
                                   }};

  keyExistsInMap(veggy_map, "s");
  keyExistsInMap(veggy_map, "x");

  return EXIT_SUCCESS;
}

Resultado:

Key exists in a map
Key does not exist in a map

Use a função void para classificar os elementos no vetor

Alternativamente, pode-se implementar uma função de wrapper para o algoritmo std::sort que toma o objeto vetor como uma referência e classifica seus elementos em ordem crescente. Observe que as funções null geralmente carecem de meios para comunicar a falha às funções do chamador, portanto, deve-se sempre levar em consideração ao projetar a solução.

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

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

void sortVector(vector<string> &vec) {
  std::sort(vec.begin(), vec.end(),
            [](const auto &x, const auto &y) { return x < y; });
}

int main() {
  vector<string> arr = {
      "element",  "implementation", "or",   "the", "execution", "dependent",
      "template", "character",      "that", "all", "via",       "class"};

  sortVector(arr);

  for (const auto &item : arr) {
    cout << item << "; ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Resultado:

all; character; class; dependent; element; execution; implementation; or; template; that; the; via;
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - C++ Function