Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
curso-cpp:struct [2017/03/21 20:47] santo |
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 87: | Línea 87: | ||
De manera similar a lo que ocurre con los vectors, es 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: | De manera similar a lo que ocurre con los vectors, es 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 e; | ||
Esquina e2; | Esquina e2; | ||
Línea 96: | Línea 96: | ||
O directamente en la declaracion: | O directamente en la declaracion: | ||
- | <code> | + | <code cpp> |
Esquina e = {"Cordoba","Medrano"}; | Esquina e = {"Cordoba","Medrano"}; | ||
Esquina e2; | Esquina e2; | ||
Línea 104: | Línea 104: | ||
Así, para representar la escuela anterior, podríamos tener un struct con la información del alumno: | Así, para representar la escuela anterior, podríamos tener un struct con la información del alumno: | ||
- | <code> | + | <code cpp> |
struct Alumno | struct Alumno | ||
{ | { | ||
Línea 121: | 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> |