Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa | |||
curso-cpp:struct [2017/03/21 21:01] 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> | </code> | ||
Línea 127: | Línea 127: | ||
Como un struct define un nuevo tipo que puede usarse igual que los ya existentes, las funciones pueden recibir parámetros de tipo struct: | 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> | + | <code cpp> |
string nombreCompleto(Alumno a) | string nombreCompleto(Alumno a) | ||
{ | { |