Herramientas de usuario

Herramientas del sitio


curso-cpp:struct

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
curso-cpp:struct [2017/03/21 20:36]
santo creado
curso-cpp:struct [2017/10/29 19:20] (actual)
santo
Línea 21: Línea 21:
 ¿Qué pasa si queremos guardar tanto nombre como apellido? Podemos tener **dos vectors** diferentes: ¿Qué pasa si queremos guardar tanto nombre como apellido? Podemos tener **dos vectors** diferentes:
  
-<​code>​+<​code ​cpp>
 vector<​string>​ nombres; vector<​string>​ nombres;
 vector<​string>​ apellidos; vector<​string>​ apellidos;
Línea 32: Línea 32:
 ¿Y si tuviéramos que agregar los demás datos? Tendríamos que tener muchos vectors: ¿Y si tuviéramos que agregar los demás datos? Tendríamos que tener muchos vectors:
  
-<​code>​+<​code ​cpp>
 vector<​string>​ nombres; vector<​string>​ nombres;
 vector<​string>​ apellidos; vector<​string>​ apellidos;
Línea 52: Línea 52:
 Por ejemplo, una esquina en una ciudad viene dada generalmente indicando las dos calles que allí se cruzan. Podríamos tener así un tipo para las esquinas, que podríamos escribir así: Por ejemplo, una esquina en una ciudad viene dada generalmente indicando las dos calles que allí se cruzan. Podríamos tener así un tipo para las esquinas, que podríamos escribir así:
  
-<​code>​+<​code ​cpp>
 struct Esquina struct Esquina
 { {
Línea 62: Línea 62:
 o también de forma completamente equivalente:​ o también de forma completamente equivalente:​
  
-<​code>​+<​code ​cpp>
 struct Esquina struct Esquina
 { {
Línea 75: Línea 75:
 ¿Cómo utilizamos este tipo? Podemos declarar variables de tipo Esquina exactamente igual que declaramos las de otros tipos como int o string: ¿Cómo utilizamos este tipo? Podemos declarar variables de tipo Esquina exactamente igual que declaramos las de otros tipos como int o string:
  
-<​code>​+<​code ​cpp>
 Esquina e; Esquina e;
 Esquina e2; Esquina e2;
Línea 85: Línea 85:
 El ejemplo muestra que podemos utilizar ''​.''​ para acceder a los componentes individuales de un struct. Cada uno de estos componentes funciona como una variable independiente,​ del tipo correspondiente,​ y el struct lo que hace es funcionar como una sola "gran variable"​ que las une a todas. También en el ejemplo vemos que es válido utilizar el operador de asignación para copiar structs, igual que copiábamos variables de tipos básicos como ''​int''​. Esto lo que hará es copiar cada componente. El ejemplo muestra que podemos utilizar ''​.''​ para acceder a los componentes individuales de un struct. Cada uno de estos componentes funciona como una variable independiente,​ del tipo correspondiente,​ y el struct lo que hace es funcionar como una sola "gran variable"​ que las une a todas. También en el ejemplo vemos que es válido utilizar el operador de asignación para copiar structs, igual que copiábamos variables de tipos básicos como ''​int''​. Esto lo que hará es copiar cada componente.
  
-Asípara representar la escuela anterior, podíramos tener un struct con la información ​del alumno:+De manera similar a lo que ocurre con los vectorses posible((En [[cpp-avanzado:​c++11|C++11]])) indicar ​un valor para todo el struct ​en lugar trabajar ​con componentes de a una, mediante el uso de llaves para dar los valores en el orden del struct. El ejemplo anterior por lo tanto se podría reescribir como:
  
-<​code>​+<​code ​cpp> 
 +Esquina e; 
 +Esquina e2; 
 +e = {"​Cordoba","​Medrano"​};​ 
 +e2 = e; // Ahora la variable e2 contiene la misma esquina que la variable e 
 +</​code>​ 
 + 
 +O directamente en la declaracion:​ 
 + 
 +<code cpp> 
 +Esquina e = {"​Cordoba","​Medrano"​};​ 
 +Esquina e2; 
 +e2 = e; // Ahora la variable e2 contiene la misma esquina que la variable e 
 +</​code>​ 
 + 
 +Así, para representar la escuela anterior, podríamos tener un struct con la información del alumno: 
 + 
 +<code cpp>
 struct Alumno struct Alumno
 { {
Línea 104: Línea 121:
 Y tener **un solo vector**, que guardará directamente Alumnos: Y tener **un solo vector**, que guardará directamente Alumnos:
  
-<​code>​+<​code ​cpp>
 vector<​Alumno>​ alumnos; vector<​Alumno>​ alumnos;
 +</​code>​
 +
 +Como un struct define un nuevo tipo que puede usarse igual que los ya existentes, las funciones pueden recibir parámetros de tipo struct:
 +
 +<code cpp>
 +string nombreCompleto(Alumno a)
 +{
 +    return a.nombre + " " + a.apellido;
 +}
 </​code>​ </​code>​
curso-cpp/struct.1490128591.txt.gz · Última modificación: 2017/03/21 20:36 por santo