Tecnología

Inicio

Cómo Alfabetizar una matriz en C ++

El C ++ Biblioteca de plantillas estándar está lleno de funciones útiles para trabajar con datos, incluyendo el algoritmo de ordenación. Por desgracia, si se utiliza el algoritmo de ordenación en una matriz de cadenas, no van a salir en orden alfabético. En su lugar, toma por defecto la clasificación en algo que se conoce como orden ASCIIbetical - una clasificación basada en la codificación interna de las letras individuales. Con el fin de ordenar alfabéticamente, debe proporcionar una función que le dice al algoritmo de ordenación exactamente cómo comparar dos cadenas en la forma que desee.

Instrucciones

1 Incluir todas las cabeceras necesarias mediante la adición de las líneas siguientes al comienzo de su programa:

incluir <algoritmo> incluir <cadena>

2 Escribir una función de contenedor para la función lexographical_compare. La función de clasificación () que va a utilizar más adelante requiere la función de comparación para tomar dos cadenas como argumentos y devolver un bool, que no es cómo funciona la función lexographical_compare. Se puede declarar esta función como una función global en el espacio de nombres de su proyecto para permitir que se puede utilizar desde cualquier parte de su programa. Si sólo necesita ordenar alfabéticamente una matriz dentro de una clase, es posible que desee declarar como una función miembro privada.
bool myCompare (cadena a, b cadena)
{
lexographical_compare volver (a.begin (), a.end (), b.begin (), b.end ());
}

3 Ordenar la matriz utilizando el algoritmo de ordenación con la función de comparación que acaba de escribir:
sort (myStringArray, myStringArray + myStringArrayCount, myCompare);

Consejos y advertencias

  • Mira en la biblioteca local para los métodos para especificar cómo ordenar las cuerdas - diferentes idiomas tienen diferentes reglas para la alfabetización.