Tecnología

Inicio

Cómo organizar una lista utilizando Las estructuras en C ++

Cómo organizar una lista utilizando Las estructuras en C ++


Las listas enlazadas son útiles para las listas dinámicas de objetos que van a cambiar con frecuencia. Una lista enlazada puede realizar inserciones y deleciones de lista en un tiempo constante, mientras que los vectores dinámicos realizan estas tareas en tiempo lineal. Este beneficio para la inserción y deleción tiene un precio de tener un tiempo de acceso más lento, ya que la lista debe ser atravesada cada vez que se desea un índice diferente. Esta falta de acceso aleatorio significa que no se puede utilizar un estándar algoritmo de ordenación tales como "qsort", que es una implementación del algoritmo de ordenación rápida que se encuentra en la biblioteca estándar de C ++. Afortunadamente, los diseñadores de std :: lista, siempre y herramientas de clasificación específicos que están bien documentados y fácil de usar.

Instrucciones

1 Incluir un encabezado de la lista de la biblioteca estándar en el archivo de código. Esto ya se puede incluir si se ha definido el objeto de lista en el código fuente.

incluir <lista>

2 Modificar la aplicación de la estructura se le ordenando sobrecargar el operador "<". Este operador es utilizado por std :: lista al ordenar la lista. Asegúrese de seleccionar el campo de datos adecuado para ordenar, de lo contrario los resultados de la clasificación pueden no ser los esperados.

// Este es un ejemplo de estructura. Modificar la estructura existente para utilizar el operador <

MyStruct struct

{

int m_dataToSortOn;

operador & lt bool; (Const MyStruct y dcha)

{

this.m_dataToSortOn volver & lt; rhs.m_dataToSortOn;

}

};

3 Llamar al método "especie" en su lista de objetos. Esto ordenará la lista de objetos en base a la salida del operador "<".

// Ordenar la lista de datos

myList.sort ();

Consejos y advertencias

  • Puede cambiar el criterio de ordenación para su estructura mediante la modificación del operador de comparación para utilizar un campo de datos diferente para la comparación.
  • También puede proporcionar una función de comparación a un método para ordenar de la lista. Esto debe tomar dos parámetros, y devolver un valor booleano que indica si el parámetro es un parámetro menos de dos.
  • El operador de comparación espera que el operador "<" se implementa para cualquier campo de datos que está utilizando para la comparación. Si se comparan los objetos de un tipo personalizado, asegúrese de que el tipo personalizado ha implementado el operador "<" también.