|
Título: Optimizar este código en C++ Publicado por: huchoko en 25 Octubre 2018, 02:50 am Tengo este código, el cual funciona, pero tiene un error garrafal.
Código En el mismo código se comenta el error, pues el cual es que estoy creando 512 estructuras, por lo cúal hay un límite de productos que se pueden ingresar. Pero me gustaría hacerlo dinámico, osea que el número de estructuras sea proporcional al número de productos. O(n)? Ya le he tratado de hacer, con malloc, pero no era lo que buscaba... Saludos :) PD: Si compilo esto con g++, todo bien (también probé compilando con el standard C++11 y sigue funcionando), pero si compilo con cl (el compiler de VS Studio), al ejecutarlo y elegir la opción 1, se bugea y se salta el campo de ingresar nombre a ingresar precio. Título: Re: Optimizar este código en C++ Publicado por: elgilun en 25 Octubre 2018, 06:55 am En C++ un array de dimensión dinámica es de preferencia un std::vector
https://es.cppreference.com/w/cpp/container/vector Título: Re: Optimizar este código en C++ Publicado por: huchoko en 25 Octubre 2018, 17:57 pm En C++ un array de dimensión dinámica es de preferencia un std::vector Me podrías dar un ejemplo con mi código?https://es.cppreference.com/w/cpp/container/vector Título: Re: Optimizar este código en C++ Publicado por: elgilun en 25 Octubre 2018, 20:09 pm Código: #include <iostream> #include <vector> #include <string> #include <cstdlib> struct prod { prod(std::string name, int precio, int id) : name{ name } , precio{ precio } , id{ id } {} int precio; int id; std::string name; std::string adc; // caracteristicas adicionales }; void addpr(std::vector<prod>& vProd); void db(std::vector<prod>& vProd); int main() { std::vector<prod> vProd; // el "array" de productos // ... // ... etcétera // ... // añadir producto: addpr(vProd); // ... // mostrar productos: db(vProd); } void addpr(std::vector<prod>& vProd) { std::string name; int precio; std::cout << "inserte nombre del producto: "; std::cin >> name; std::cout << "inserte precio: "; std::cin >> precio; vProd.emplace_back(name, precio, std::rand()); } void db(std::vector<prod>& vProd) { for (const auto& i : vProd) { std::cout << "mombre: " << i.name << '\n' << "precio: " << i.precio << '\n' << "ID: " << i.id << "\n------------------------\n"; } } |