Tecnología

Inicio

Forma de guardar una lista de objetos en MFC

Cada lenguaje de programación y biblioteca incluye una matriz como parte de su conjunto de herramientas. Las matrices son útiles porque permiten un almacenamiento conveniente y eficiente de los datos. La biblioteca de clases Microsoft Foundation proporciona la clase CArray. Es capaz de almacenar datos de cualquier tipo. CArray implementa una matriz de tamaño variable que puede reducir o aumentar la demanda. Siga estos pasos para la práctica de las funciones más utilizadas de CArray y poner en práctica de inmediato.

Instrucciones

1 Comprender la declaración de clase o prototipo, como se muestra a continuación. El primer parámetro, el tipo, especifica qué tipo de objetos se almacenan en y reenviado por el arreglo. El segundo parámetro, ARG_TYPE, indica el tipo de argumento que se utiliza para acceder a un objeto. A menudo, ARG_TYPE es una referencia a la primera parámetro. Las personas con conocimiento de la biblioteca de plantillas estándar de C ++ puro se dará cuenta de la semejanza del prototipo MFC CArray a la del recipiente Mapa:

plantilla <tipo de clase, clase ARG_TYPE> CArray clase: CObject pública

2 Conocer los conceptos básicos de la MFC CArray. La indexación está basado en cero. Es decir, el primer elemento está en la posición 0, mientras que el último elemento está en la posición "ARRAY_SIZE-1". Si el objeto es CArray de tamaño 10, entonces su último elemento está en la posición 9. El tamaño de la matriz se puede establecer previamente, o los elementos se pueden agregar uno por uno, permitiendo la matriz para crecer más allá de su tamaño actual. Las asignaciones de memoria son contiguos por defecto, hasta que se supere el sector de la memoria.

3 Pre-asignar memoria para la matriz. Hacer esto justo después de la declaración. Incluso si usted no sabe el tamaño de la matriz alcanzará, hacer una estimación liberal. Preasignación se reserva un área contigua (continua) de memoria en la que residirá la matriz. Cuando la memoria no tiene discontinuidades, las operaciones de la matriz son más eficientes y se evita que las transferencias de copiado y de datos. Para esta operación, utilice la función ") (SetSize".

4 Añadir objetos a la matriz mediante el uso de la "Agregar ()" función que se muestra a continuación:


CArray <PuntoC, PuntoC> Parr;

pArr.Add (PuntoC (20, 40));

5 elementos de acceso almacenados en la matriz. Esto se puede hacer a través de la "GetAt ()" función y a través del operador "[]", como en todas las otras matrices. "GetAt ()" acepta un número entero de índice y devuelve el elemento almacenado en esa ubicación. Su opuesto es "SetAt ()" que cambia un valor de un índice determinado.

6 Eliminar un elemento de la matriz. Para ello, puede utilizar el "RemoveAt ()" o el "RemoveAll ()" función. "RemoveAll ()" pasa sobre el objeto CArray de todos los elementos. "RemoveAt ()" acepta dos entradas, un índice de enteros y el número de elementos que deben eliminarse a partir de esa ubicación:

RemoveAt vacío (int nIndex, int nPosiciones = 1);

Consejos y advertencias

  • El tiempo que se necesita para recuperar un elemento de CArray es constante y no depende de su tamaño o la ubicación de objeto.
  • Una serie de funciones miembro CArray hacer llamadas a funciones auxiliares globales que personaliza la clase CArray. Tenga esto en cuenta al considerar la eficiencia.
  • "DestructElements ()" es una función auxiliar que se llama cuando se eliminan elementos. "ConstructElements ()" es una función auxiliar que se llama cuando se crean elementos.
  • Cuando se destruye un objeto CArray que mantiene punteros, debe destruir los objetos que apuntaban a por separado.