Buenas, queria resolver una duda referente a el uso de vectores con estructuras. A lo que me refiero es a que si puedo hacer esto:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
struct Estructura
{
string nombre;
int Edad;
};
int main()
{
Estructura persona[2];
for (int i=0 ; i<2 ; i++)
{
cout << "Ingrese nombre: ";
getline(cin,persona[i].nombre);
cout << "Ingrese edad: ";
cin >> persona[i].edad;
cin.ignore();
}
// Y para imprimirlo seria:
for (int i=0 ; i<2 ; i++)
{
cout << persona[i].nombre << endl;
cout << persona[i].edad << endl;
}
}
Ahora en vez de Estructura persona[2];
Hacer algo como vector<Estructura>Arreglo; // Hasta aqui declare un vector de tipo Estructura
Pero como hago la parte de:
for (int i=0 ; i<2 ; i++)
{
cout << "Ingrese nombre: ";
getline(cin,persona[i].nombre);
cout << "Ingrese edad: ";
cin >> persona[i].edad;
cin.ignore();
}
Como asigno el nombre y la edad que pida al usuario a el vector que cree del tipo Estructura??...
Esto se puedo hacer?. Gracias por su colaboracion.
O utilizas una estructura temporal, y luego la insertas en el vector,
o al comienzo de cada ciclo, le insertas una estructura, y trabajas sobre esa estructura (v[ i ])
o le pones un tamaño inicial al vector, y ya no necesitas insertar la estructura cada ciclo.
Cita de: ivancea96 en 8 Diciembre 2014, 01:23 AM
O utilizas una estructura temporal, y luego la insertas en el vector,
o al comienzo de cada ciclo, le insertas una estructura, y trabajas sobre esa estructura (v[ i ])
o le pones un tamaño inicial al vector, y ya no necesitas insertar la estructura cada ciclo.
Realice lo ultimo que mencionaste y funciono, ahora bien me podrias dar una pequena explicacion de las 2 primeras ya que para ser sincero no entendi muy bien. Te lo agradeceria. Perdona la molestia.
S no me equivoco, (y es como yo suelo hacerlo), si creas un vector de tuplas (o cualquier otro contenedor, como una lista) lo que hago es crear una variable tupla temporal, y a cada "vuelta" la meto en el vector usando push_back
Por ejemplo, para una tupla como :
struct Empleado {
int DNI;
string categoria;
double sueldo;
};
Deseo leer de un fichero de texto y meter los datos en un vector:
Empleado datos;
vector<Empleado> E;
string cate;
// Carga datos desde file
ifstream F;
F.open("empleados.txt");
while(!F.eof()){
F >> datos.DNI;
F >> datos.categoria;
F >> datos.sueldo;
E.push_back(datos);
}
F.close();
Es un ejemplo muy sencillo y quizás un poco "chapuza", pero creo que explica el funcionamiento. Creas una variable del tipo tupla que deseas, la rellenas con los datos y la metes en el vector, y lo haces de nuevo hasta terminar.
De todos modos, en lo relativo a vectores, ves pensando en ver como funcionan los iteradores, que son otra forma de acceder a los vectores, porque te será mas útil y ademas imprescindible para manejar otros contenedores de la STL, porque por ejemplo las listas (que son como vectores pero mas versátiles) solo pueden manejarse con iteradores, y no con índices como los vectores.