Un programador puede escribir su propia función (). Sin embargo, la función sort () de la biblioteca de algoritmo es probable que funcione mejor de lo que escribe el programador ordinario.
La función sort () puede ordenar los valores de un vector en orden ascendente o en orden descendente. Para ordenar un vector, la biblioteca de algoritmo debe incluirse. La biblioteca de vector también debe incluirse. El comienzo del programa debería ser algo así como:
#incluirEl vector es en realidad una clase, desde la cual se pueden crear objetos vectoriales. Con la sección superior anterior del programa, se puede clasificar un vector a clasificar de la siguiente manera:
vectorEl nombre de la clase es un vector. El nombre del objeto instanciado es VTR.
En este tutorial, la codificación de clasificación se realiza en la función C ++ Main (). Este tutorial explica cómo ordenar un vector C ++ usando el vector anterior, VTR.
Contenido del artículo
Clasificación por defecto
Clases de clasificación predeterminadas en orden ascendente. La sintaxis para esto es:
plantillaClasificando todo el vector
El siguiente código clasifica todo el vector:
ordenar (VTR.begin (), VTR.fin());La lista ordenada es:
A, B, C, D, M, N, S, V, X, Z,cual es correcta. Si la clasificación no es correcta, entonces la falla es la del programador y no la de la función Sort ().
El randomaccessitererator es intrínseco. VTR.begin () Devuelve un iterador que apunta al primer elemento y VTR.End () Devuelve otro iterador del mismo tipo que apunta justo después del último elemento. Por lo tanto, no hay necesidad de instanciar un vector que indique, RandomAccessitererator. De esta manera, toda la lista está ordenada.
Clasificar un rango en orden ascendente
La lista no organizada anterior tiene diez elementos con índices:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9Para ordenar solo los elementos de la posición 4, que es índice, 3 = 4 - 1, a la posición 9, que es índice, 8 = 9 - 1, agregue 3 a VTR.begin () para tener el primer iterador y luego agregue 8 a VTR.begin () para tener el último iterador, para la función sort (). El 9th El elemento del índice 8 no se incluirá en la clasificación. Es decir, el último elemento indicado en el rango elegido, está excluido para la clasificación. El siguiente código ilustra esto:
ordenar (VTR.begin () + 3, VTR.begin () + 8);Los elementos en las posiciones 4, 5, 6, 7, 8 se han ordenado. El elemento en el 9th La posición no se ha incluido en el tipo. Estas posiciones corresponden a los índices 3, 4, 5, 6, 7. El elemento en el índice 8 no se ha incluido en el tipo.
Entonces, para ordenar un rango, identificar los primeros elementos y los últimos en el rango, no necesariamente de toda la lista. Agregue el índice del primer elemento al iterador begin (). Agregue el índice del último elemento, todavía al iterador Begin (). Recuerde que el último elemento para el rango no se incluirá en el tipo, pero se incluirá el primer elemento para el rango.
Es posible agregar un índice a un iterador porque agregar un número es lo mismo que incrementar el iterador ese mismo número de veces. Incrementar a un iterador una vez lo hace un punto al siguiente elemento.
Clasificación en orden descendente
La sintaxis es:
plantillaEsto difiere de la sintaxis anterior con la presencia de "Comparar comp". comp es un puntero de función o un objeto de función. comp en realidad decide si la clasificación debe ser ascendente o descendente. Su ausencia es el caso predeterminado, lo que significa descender.
Ordenar la lista completa en orden descendente
El siguiente código clasifica todo el vector anterior en orden descendente:
ordenar (VTR.begin (), VTR.end (), mayorEl vector ordenado en orden descendente es:
Z, X, V, S, N, M, D, C, B, A,Tenga en cuenta el uso de "mayor ()" en el lugar de comp.
Lo opuesto a mayor () es menor (), que es el valor predeterminado (ascendente), y no tiene que ser escrita.
Clasificar un rango en orden descendente
Se puede clasificar un rango en orden descendente, así como en orden ascendente. El siguiente código clasifica el 4th a los 9th elemento sin incluir el 9th elemento; y descendiendo.
ordenar (VTR.begin () + 3, VTR.begin () + 8, mayorEl vector con su rango elegido, ordenado en orden descendente, es:
Z, X, C, V, N, M, B, A, S, D,Función de comparación personalizada
El siguiente programa tiene una función de comparación personalizada para ascender:
#incluirLa función para hacer la comparación se llama comparar. Devuelve un bool. Tiene dos parámetros, A y B, del mismo tipo, que el tipo de elemento vectorial. Devuelve verdadero si a es menor que b y falso de lo contrario. El nombre de esta función es el tercer argumento de la llamada de función sort (). En este programa, Compare es lo mismo que menos (). Se pueden usar algunos otros nombres en lugar de comparar.
La lista no organizada es:
Z, X, C, V, B, N, M, A, S, DLa lista ordenada es:
A, B, C, D, M, N, S, V, X, Z,Por supuesto, la función de comparación personalizada se puede usar para un rango. El siguiente programa ilustra esto:
#incluirLa lista no organizada es:
Z, X, C, V, B, N, M, A, S, DLa lista ordenada es:
Z, X, C, A, B, M, N, V, S, D,La función de comparación se puede codificar para descender. El siguiente programa ilustra esto:
#incluirSolo cambia (a b).
La lista no organizada es:
Z, X, C, V, B, N, M, A, S, DLa lista ordenada es:
Z, X, V, S, N, M, D, C, B, A,La función de comparación personalizada se puede usar para un rango, en orden descendente. El siguiente programa ilustra esto:
#incluirLa lista no organizada es:
Z, X, C, V, B, N, M, A, S, DEl vector con su rango elegido, ordenado en orden descendente, es:
Z, X, C, V, N, M, B, A, S, D,Otros tipos de datos
Otros tipos de datos se pueden ordenar utilizando sus tipos. Por ejemplo, si se va a ordenar el tipo de datos INT, entonces se utilizaría "INT" para crear el vector y en la función de comparación de construcción o personalizada. Si el tipo de datos está en una biblioteca, entonces el encabezado de la biblioteca debe incluirse en el programa, en cuanto al caso de la cadena a continuación:
#incluirLa lista no organizada es:
Ze, xe, ce, ve, be, ne, me, ae, se, deLa lista ordenada es:
Ze, xe, ve, se, ne, me, de, ce, be, ae,Conclusión
C ++ viene con la biblioteca de algoritmo que tiene una función sort (). Esta función toma dos o tres argumentos en su uso normal. El primer argumento es en donde la lista de vectores, el tipo debería comenzar. El segundo argumento es en donde la lista de vectores, el tipo debería terminar. El tercer argumento determina si la clasificación se debe realizar en orden ascendente o en orden descendente.