KnowledgeCity

Contenedores de la STL en C++

Este módulo trata sobre el diseño y la herencia de clases.

Este módulo trata sobre el diseño y la herencia de clases. Introduciremos los conceptos de buen diseño de clases. Mostraremos la forma de usar la herencia para describir objetos del mundo real. También describirá diferentes tipos de herencia y cómo usarlos, pero también introducirá un concepto de composición que puede usarse para describir componentes del objeto de la vida real.

Objetivos de aprendizaje

  • Aprenda los principios del buen diseño de clases
  • Más información sobre la herencia
  • Más información sobre la composición de la clase

Habilidades

  • Aplicar buenos principios de diseño.
  • Usar la herencia para describir objetos de la vida real
  • Usando la composición de la clase  

Instructor: Mikhail Veygman

Duración: 47m · 12 lecciones
Nivel: Advanced
Idioma: Español

Habilidades que obtendrás

Fundamentos de CConceptos de CMódulos CMódulo de funcionesBiblioteca de plantillas estándar (STL)Metaprogramación de plantillas

Lo que aprenderás

  • Usar contenedores de secuencia STL incluyendo vectores, queue, deque, stack y list
  • Comparar list versus vector para elegir el contenedor de secuencia correcto
  • Aplicar contenedores asociativos como sets, multisets (bags) y maps
  • Trabajar con maps sin ordenar o hash maps y contrastar maps versus hash maps
  • Recorrer contenedores STL usando iteradores

Puntos clave

  • El curso cubre contenedores de secuencia STL, incluyendo vectores, queue, deque, stack y list.
  • Aborda contenedores asociativos como sets, multisets (bags) y maps.
  • Distingue entre maps y maps sin ordenar o hash maps.
  • Enseña el uso de iteradores para trabajar con contenedores.
  • Los temas se basan en fundamentos de C++ y la Biblioteca de Plantillas Estándar (STL).

Preguntas frecuentes

¿Qué contenedores cubre este curso?

Cubre contenedores de secuencia como vectores, queue, deque, stack y list, así como contenedores asociativos incluyendo sets, multisets (bags), maps y maps sin ordenar o hash maps.

¿Explica el curso la diferencia entre contenedores similares?

Sí. Incluye lecciones comparando list versus vector y maps versus hash maps.

¿Qué habilidades desarrolla este curso?

Desarrolla Fundamentos de C++, Conceptos de C++, Módulos de C++, Módulo de Función, la Biblioteca de Plantillas Estándar (STL) y Metaprogramación de Plantillas.

¿Cómo se accede a los elementos en estos contenedores?

El curso incluye una lección sobre iteradores, que se utilizan para recorrer los contenedores.

Transcripción

Transcripción

En esta lección, veremos los contenedores y los iteradores, y comience con un vector estándar. El vector es una respuesta a un problema auricular. con matrices C y C ++. Es decir, la cantidad de elementos que pueden necesitar distorsionar en el contenedor no se fija y es posible que tampoco se conozca de antemano. Entonces no puede asignar el número exacto de elementos en la matriz, pero los elementos deberán ser accesibles de la manera más eficiente. Aquí, ingrese el vector estándar. Veamos el ejemplo. En este ejemplo tenemos tres vectores en construcción. Uno es un valor predeterminado sin tamaño, uno con tamaño pero sin elementos, y el tercero usando la inicialización de carrera estándar. Esto construirá un vector en su lugar con los valores que se establecen en la lista. Ahora construyamos el ejemplo y ejecútelo. Primero veamos el elemento, agregando un elemento del vector usando el método pushback. Como puede imaginar, el elemento se agrega mediante retroceso. se asigna y se agrega al final del vector, aumentando el tamaño del vector y hacer que el elemento esté disponible. Y esto es exactamente lo que vemos en la salida de este programa. En segundo caso, comentémoslo. y use el vector de prueba dos, construir y ejecutar. Y con el vector de prueba dos, vemos que el tamaño inicial del vector es 10. Y luego podemos configurar el elemento utilizando corchetes o el operador de referencia. De hecho, podemos establecer el elemento cero en el valor 15. Y esto es lo que vemos en la salida de la segunda línea. para el vector de prueba dos. Los últimos usuarios de los que hablaremos es cómo acceder al elemento del vector. En realidad, hay dos ejemplos de cómo se hace esto. El primer ejemplo usa algo similar para cada uno, que es básicamente el bucle for que se mueve a través de los valores dentro del vector, y luego genera sus valores. En la cuarta forma, veremos que usaremos índices. Así que ahora vamos a construirlo. Y también recibimos una advertencia. La advertencia aquí suena por el hecho de que estoy declarando variable i como un entero, al que se le asigna un tipo, pero el tamaño no necesita ir en el territorio negativo. Entonces, el valor para el tamaño, el tipo de retorno del tamaño es en realidad el tipo de tamaño, que generalmente no está firmado, pero podemos usar el mismo tipo de tamaño en lugar del int y podemos hacerlo así. Usando el tipo de tamaño, el tipo de tamaño es realmente el tipo declarado dentro de una plantilla de vector para definir como qué tipo se está utilizando como un tipo de tamaño dentro de este vector. Y normalmente es una talla_t. Pero construyamos esto y ejecutémoslo. Y como puede ver, el tamaño inicial del vector es 10, que es uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, 10. Y los valores son uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, 10, ya sea usando la iteración de valor o usando el índice. Hay otras formas y métodos. de acceder y utilizar vectores pero están más allá del alcance de esta sección en particular, aunque debo señalar que debido a que el vector es una extensión de la funcionalidad de la matriz, la memoria asignada para el vector es contigua permitiendo una gran velocidad de acceso a los datos, pero viene con inconvenientes cuando se trata a la memoria asignada y desasignada. Como la memoria del vector tiene que ser contigua, memoria asignada durante llamadas como retroceso o en las reproducciones puede resultar caro si la memoria necesaria para adjuntar puede no estar disponible directamente al final del vector. Y es posible que todo el vector deba cambiar desde su ubicación original hasta la nueva. Y si el número de elementos es pequeño, puede que no tenga tanto impacto, pero si el número de elementos es grande, luego, la mudanza podría resultar costosa. Algo similar sucederá cuando borre el vector. Debido a que los contenidos deben ser contiguos, todos los elementos detrás del elemento borrado tendrá que avanzar, incurriendo en gastos de tiempo. Hay formas de solucionar el primer problema, pero no hay forma de sortear fácilmente el segundo. Entonces, con eso en mente, echemos un vistazo a la cola.

Aprende sobre la marcha

Lleva tu aprendizaje a todas partes: la app de KnowledgeCity te permite ver las lecciones sobre la marcha.