Usa funzioni Void in C++

Jinku Hu 12 ottobre 2023
  1. Usa la funzione void per trovare quale stringa è più lunga
  2. Usa la funzione void per trovare se la chiave esiste in una mappa
  3. Usa la funzione void per ordinare gli elementi nel vettore
Usa funzioni Void in C++

Questo articolo mostrerà diversi metodi su come usare le funzioni void in C++.

Usa la funzione void per trovare quale stringa è più lunga

Le funzioni che non hanno valore di ritorno hanno il tipo void specificato come parametro di ritorno. Nelle funzioni void, l’istruzione implicita return viene chiamata dopo l’ultima istruzione del corpo della funzione. Notare che l’istruzione esplicita return può essere collocata nel corpo della funzione void dove il flusso di controllo deve essere spostato immediatamente alla funzione chiamante. Nell’esempio seguente, la funzione isLessString contiene l’unica istruzione condizionale per stampare le stringhe corrispondenti sulla console, e dopo di essa viene eseguito il return implicito.

#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;
}

Produzione:

string_1 is shorter than string_2

Usa la funzione void per trovare se la chiave esiste in una mappa

In questo caso, la funzione void viene utilizzata per implementare la funzione di ricerca dei tasti per il contenitore std::map. Notare che il risultato viene comunicato stampando la costante di stringa corrispondente al flusso cout. Sebbene questo non sia il metodo preferito per passare i dati internamente al programma, può essere utilizzato per indicare le informazioni all’utente finale.

#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;
}

Produzione:

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

Usa la funzione void per ordinare gli elementi nel vettore

In alternativa, si può implementare una funzione wrapper per l’algoritmo std::sort che prende l’oggetto vector come riferimento e ordina i suoi elementi in ordine crescente. Si noti che le funzioni void di solito mancano dei mezzi per comunicare l’errore alle funzioni chiamanti, quindi si dovrebbe sempre tenerne conto quando si progetta la soluzione.

#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;
}

Produzione:

all; character; class; dependent; element; execution; implementation; or; template; that; the; via;
Autore: 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

Articolo correlato - C++ Function