Pregunta

Pregunta simple, espero que sea una forma fácil y solo quiero verificar que lo estoy haciendo de la manera correcta / eficiente.

Tengo un objeto de clase T, que normalmente se coloca en un vector que se crea en mi función main (). Puede ser cualquier tipo de datos, string, int, float ... etc. Estoy leyendo un archivo ... que es ingresado por el usuario y pasado a la función. Aquí está mi lectura básica en la función:

template <class T, class U>
void get_list(vector<T>& v, const char *inputFile, U)
{
ifstream myFile;
T object;

myFile.open("inputFile")
while(!myFile.eof())
   {
   myFile >> object;
   insert(v, object, U)
   }
}

insert es solo otra función que pasará e insertará los datos en mi estructura de datos. Solo quiero asegurarme de que esta sea la mejor manera de transmitir esos datos si incluso funcionará.

¿Fue útil?

Solución

Parece que funcionará bien, y diría que esta es probablemente la mejor manera de hacerlo. ¿Pero por qué preguntas aquí en lugar de solo probarlo tú mismo?

Otros consejos

Cometiste el antiguo error de probar contra eof en la condición. EOF no se establece hasta que intente leer más allá del final del archivo. Entonces, este método insertará un valor adicional en el vector que no desea.

template <class T, class U>
void get_list(vector<T>& v, const char *inputFile, U)
{
    ifstream myFile("inputFile");  // Why hard code this?
                                   // When you pass inputFile as a parameter? 
    T object;


    while(myFile >> object)  // Get the object here.
                             // If it fails because of eof() or other
                             // It will not get inserted.
    {
         insert(v, object, U)
    }
}

No utilice .eof () en una secuencia en una while -condition. La condición se evaluará como verdadera solo después de que se haya intentado leer más allá del final del archivo. una mejor manera es hacerlo

while(myFile >> object)
    insert(v, object, U);

Su uso de U es defectuoso. No tengo idea de para qué se utiliza. Una vez se usa como tipo, pero luego otra vez se lo pasa a la función insert como valor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top