Crear funciones booleanas en C++
- Implementar la comparación del tamaño de las cadenas como una función booleana
- Implementar la función booleana que devuelve si el elemento con clave específica existe en un mapa
Este artículo introducirá cómo crear funciones booleanas en C++.
Implementar la comparación del tamaño de las cadenas como una función booleana
La función booleana denota la función que devuelve un valor de tipo bool
. La estructura de la función booleana puede ser la misma que la de cualquier otra función. En el siguiente ejemplo, implementamos una función isLessString
que compara dos tamaños de cadenas. La función devuelve true
si la longitud de la primera cadena es menor que la de la segunda; de lo contrario, devuelve false
.
Observe que ponemos la expresión de comparación después de la palabra clave return
para pasar el valor resultante de nuevo a la función llamadora.
#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;
}
Resultado:
str1 is shorter than str2
Implementar la función booleana que devuelve si el elemento con clave específica existe en un mapa
Este ejemplo implementa la función booleana para encontrar si el elemento con una clave específica existe en un contenedor std::map
. Dado que el tema principal es sobre la función de retorno de tipo bool
, utilizaremos el método incorporado find
en std::map
en lugar de implementar la rutina de búsqueda por nuestra cuenta.
El método find
toma un argumento - key
y devuelve el iterador al elemento correspondiente. Si no se encuentra ningún elemento con la clave especificada, se devuelve el iterador end
(más allá del final).
Nuestra función keyExistsInMap
toma los argumentos map
y string
y llama al método find
del map
dado. Si el valor de retorno de la llamada no es igual a end
, el iterador true
se devuelve a la función que lo ha llamado; de lo contrario, devuelve 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;
}
Resultado:
Key exists
Key does not exist
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