Skip to content

Instantly share code, notes, and snippets.

@pr00thmatic
Last active August 29, 2015 14:00
Show Gist options
  • Save pr00thmatic/71ae3961e714824072d8 to your computer and use it in GitHub Desktop.
Save pr00thmatic/71ae3961e714824072d8 to your computer and use it in GitHub Desktop.
genericidad en C++ : Recorriendo un vector cualquiera, y ejecutando un procedimiento cualquiera con cada uno de sus elementos :D
#include <string>
#include <vector>
#include <iostream>
using namespace std;
template<typename _devolver_, typename _tipoVector_>
_devolver_ recorrer(vector<_tipoVector_> V,
_devolver_ procedimiento(int, //indice
_devolver_, //la respuesta anterior
vector<_tipoVector_>)) { //el vector
_devolver_ response;
for(int i=0; i<V.size(); i++) {
response = procedimiento(i, response, V);
}
return response;
}
int indiceDeLaCadenaMasLarga(int actual, int anterior, vector<string> cadenas) {
if(cadenas[actual].length() > cadenas[anterior].length())
return actual;
return anterior;
}
template<typename _imprimible_>
int imprimir(int i, int trash, vector<_imprimible_> V) {
cout << V[i] << endl;
return 0;
}
int main() {
vector<string> cadenas(5);
cadenas[0] = ":P";
cadenas[1] = "(>'-')>";
cadenas[2] = "·w·";
cadenas[3] = "=·w·=";
cadenas[4] = "XD";
cout << recorrer(cadenas, indiceDeLaCadenaMasLarga) << endl;
recorrer<int>(cadenas, imprimir);
}
@jhtan
Copy link

jhtan commented May 3, 2014

:O

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment