U3 Flashcards

1
Q

Pregunta: ¿Qué representa la plantilla de clase Dynarray<> en C++?

A

Respuesta: Representa matrices unidimensionales de objetos almacenados en memoria libre, donde todos los objetos son del mismo tipo seleccionado en tiempo de compilación.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Pregunta: ¿Qué diferencia hay entre inicialización y asignación en el contexto de Dynarray<>?

A

Respuesta: La inicialización crea un objeto con un valor desde el principio, mientras que la asignación cambia el valor de un objeto ya existente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Pregunta: ¿Cómo se garantiza la seguridad en el uso de Dynarray<> ante excepciones?

A

Respuesta: Implementando el constructor y el operador de asignación copia de manera que manejen adecuadamente la memoria dinámica y las excepciones.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Pregunta: ¿Qué es y para qué sirve el constructor copia en Dynarray<>?

A

Respuesta: El constructor copia inicializa un nuevo objeto como una copia exacta de otro, asignando espacio nuevo y copiando los elementos uno por uno.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Pregunta: ¿Cómo funciona el operador de asignación copia en Dynarray<> y qué problema resuelve?

A

Respuesta: Destruye la matriz original del objeto destino, asigna nueva memoria y copia los elementos, evitando fugas de memoria y asegurando la independencia entre objetos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Pregunta: ¿Qué es la técnica copy-and-swap y cómo se aplica en Dynarray<>?

A

Respuesta: Es una técnica que crea una copia del objeto, intercambia su contenido con el objeto destino y luego destruye la copia antigua, mejorando la seguridad ante excepciones.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Pregunta: ¿Cuál es el propósito de las funciones begin() y end() en Dynarray<>?

A

Respuesta: Permiten iterar a través de la matriz desde el primer al último elemento, facilitando el uso de bucles for basados en rango para acceder o modificar elementos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Pregunta: ¿Qué característica principal diferencia a std::vector<> de otras estructuras como Dynarray<> en C++?

A

Respuesta: std::vector<> permite cambiar dinámicamente su tamaño durante la ejecución del programa, a diferencia de Dynarray<>, que no permite modificar el número de elementos una vez establecido.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Pregunta: ¿Por qué std::vector<> es considerado eficiente en términos de localidad de memoria?

A

Respuesta: Porque almacena sus elementos en bloques contiguos de memoria, lo que aprovecha la jerarquía de caché de la computadora y mejora la eficiencia del acceso a los elementos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Pregunta: ¿Cómo afecta la localidad espacial y temporal al rendimiento de std::vector<>?

A

Respuesta: Favorece el rendimiento debido a que es probable acceder a elementos cercanos en memoria poco después de un acceso inicial (localidad espacial) y a elementos ya accedidos anteriormente (localidad temporal).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Pregunta: ¿Qué función cumple la operación pushBack() en Vector<>?

A

Respuesta: Inserta un nuevo elemento al final del vector, aumentando su tamaño en una unidad. Si no hay espacio suficiente, reserva más memoria, duplicando la capacidad actual del vector.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Pregunta: ¿Cómo maneja Vector<> la inserción de elementos cuando se agota la capacidad?

A

Respuesta: Reserva un nuevo bloque de memoria con el doble de capacidad, copia los elementos existentes al nuevo bloque y elimina el bloque antiguo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Pregunta: ¿Qué garantías ofrece la implementación de pushBack() en Vector<>?

A

Respuesta: Ofrece una garantía fuerte de excepciones, ya que si ocurre un error durante la inserción, el estado del vector no se altera y cualquier recurso adquirido se libera adecuadamente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Pregunta: ¿Cuáles son las operaciones de acceso y modificación clave proporcionadas por Vector<>?

A

Respuesta: Incluye operaciones como pushBack() para añadir elementos, popBack() para eliminar el último elemento, y acceso seguro a elementos mediante at() que verifica el rango, además de iteradores begin() y end() para recorrer el vector.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly