Pregunta ¿Se recomienda especificar por ejemplo? vector en mi interfaz pública?


Soy nuevo en C ++, y mientras escribía una clase me di cuenta de que uno de mis métodos era pedir un vector de vectores. ¿Debería hacerse esto o debería repensar la interfaz de mi clase? (¿Cómo?)


5
2017-08-02 02:00


origen


Respuestas:


Creo que no hay problema de qué contenedor utilizas. Podrías hacerlo como

void func(std::vector<std::vector<int> > const& int_matrix);

o en C ++ 11, sucesivos > no será considerado como '>>' por lo que también podría usar

void func(std::vector<std::vector<int>> const& int_matrix);

Pero el problema es que si su trabajo se publica como código binario en lugar de código fuente, los usuarios de la interfaz deben tener el mismo implemento de STL que el suyo, de lo contrario, pueden ocurrir extraños errores de tiempo de ejecución. Así que use el contenedor STL ya que la interfaz no es adecuada en esta situación. Debe definir algunas estructuras usted mismo como el tipo de parámetros.


7
2017-08-02 02:23



Un vector de vectores no es necesariamente algo malo. Si necesita algo así como una matriz multidimensional, entonces necesita lo que necesita. (Solo asegúrate de pasar el vector por [const] referencia).

Sin embargo, es posible que desee cambiar el título de su pregunta, porque el título dice "vector <T> "(audacia porque cree que es una etiqueta HTML) pero su pregunta pregunta sobre un vector de vectores.


2
2017-08-02 02:02



IMO, si es posible, es mejor fusionar todo vectors en un solo vector. Teniendo vector de vector no tiene mucho sentido para mí.


-1
2017-08-02 02:09