Tecnología

Inicio

Cómo utilizar los punteros de función en un binario argumento de búsqueda en C ++

Cómo utilizar los punteros de función en un binario argumento de búsqueda en C ++


La biblioteca de algoritmos de C ++ biblioteca estándar contiene las implementaciones de muchos algoritmos de programación común. Estas implementaciones ofrecen una amplia gama de flexibilidad, lo que permite al programador especificar funciones de comparación de algoritmos basados ​​en la comparación que pueden trabajar con cualquier estructura concebible. La adición de una función de comparación para una búsqueda binaria utilizando punteros de función permite al programador para tomar ventaja de esta flexibilidad, y se asegura de que cualquier objeto creado por el programador se puede buscar con la biblioteca estándar.

Instrucciones

1 Ordenar la lista de objetos que se debe buscar. Una búsqueda binaria depende de una lista ordenada de estar presente. Usar función de clasificación de la biblioteca estándar para simplificar este proceso cuando se utilizan contenedores de la biblioteca estándar:

std :: sort (myList.begin (); myList.end ());

2 Cree su función de comparación para el algoritmo de búsqueda binaria. La función de comparación debe verdadero si el primer argumento es menor que el segundo. Personalizar esta función para aceptar los argumentos de la clase especificada, y asegurarse de que la clase en cuestión implementa el menor que ( "<") del operador:

MyComparison bool (MyType i, j MyType)

{

return (i&lt;j);

}

3 Suministro de su función de comparación como un argumento para la función de búsqueda binaria de la biblioteca estándar:

binary_search (myList.begin (), myList.end (), MyComparison);

Esta función utilizará ahora su función de comparación para realizar la búsqueda binaria.

Consejos y advertencias

  • Utilice plantillas de clase para realizar una función de comparación genérica. Esta función se puede reutilizar en varios objetos sin ser re-ejecutado. Por otra parte, la plantilla especialización puede permitir que el polimorfismo con los tipos de búsqueda, lo que permite una mayor flexibilidad en el diseño de los datos de su programa.
  • Los objetos que constituyen su lista debe tener el operador menor que se define para esta aplicación a la función. Modificar la función de comparación para utilizar otras funciones disponibles para sus objetos si no se puede aplicar este operador.