Descargar archivos ({{ 8 }})
Version 0.2.5
{{{"Lo de arriba mi prieto\n\n[code]\n//Forma 1\n#include <iostream>\n#include <string>\n#include <map>\n\nenum Reference {\n HELP = 1\n};\n\nstd::map<std::string, Reference> Index = {{\"help\", HELP}};\n\nint main() {\n switch(Index[\"help\"]){\n case HELP: {\n std::cout << \"Help is called\";\n }\n case 0:\n default: {\n std::cout << \"No found\";\n }\n }\n return 0;\n}\n[/code]\n\n¿O preferien esta otra forma?\n\n[code]\n//Forma 2\n#include <iostream>\n#include <string>\n#include <map>\n\nvoid HELP(){\n std::cout << \"Help is calles\";\n}\n\ntypedef (*void)Function();\n\nstd::map<std::string, Function> Index = {{\"help\", HELP}};\n\nint main(){\n Function CallFunction = Index[\"HELP\"];\n (*CallFunction)();\n}\n[/code]\n\nlado: Es un pequeño intérprete sencillo, pero no se que forma es mejor (rápida a la hora de ejecutar) de implementar." | renderPostMessage 50474}}}
>> | {{{"Tenía pensado hacer la combinación de un vector, objetos-funcion e iterator. Pero esto alargaría el tiempo de ejecución.\n\nClaro esta que usar [i]switch[/i] ya es hacer uso técnicamente de ASM en C/C++ (Por lo que tengo en entendido) pero un negroide me insulto e hizo sentir mal por lo que estaba haciendo (Un sin fin de cadenas [i]if[/i]), así que me resigne y volví a implementar de forma diferente\n\n>hurr durr usa Python\nEn ese caso mejor uso Perl\n>hurr durr usa ANSI C, [s]simio primitivo xd[/s]\nNo se que otra forma haya de implementar mapas en ANSI C, la cosa estaría que usara como llave una cadena de texto y un entero anexado\n\n;-;" | renderPostMessage 50476}}} |
>> | 157066372952.png [Google] [ImgOps] [iqdb] [SauceNAO] ( 420.82KB, 623x578, D7jFdJYWsAA6ykP.png ) {{{"tu post me hace pensar que eres un estudiante que no quiere hacer sus tareas de memeuniversidad y que espera que nosotros los negros de /t/ haremos tu tarea." | renderPostMessage 50477}}} |
>> | {{{"Estas usando un treemap para C++, que seria mas lento que un hashmap, que es mas lento que un unordere map que segun en C++ los hashmap son mas lentos que en otros lenguajes, por lo que usas alguna biblioteca externa o cambias a un Trie." | renderPostMessage 50478}}} |
>> | {{{">>50478\nUn unordered_map es un hashmap, un trie no sería más rápido y creo que no es adecuado pero lo que si es verdad es que los contenedores de la std de las implementaciones suelen ser lentas.\n\n>>50474 (OP)\nNinguna de las dos es una solución óptima. En la primera porque si helo es una constante no hace falta buscar el índice de hecho no hace falta que uses un mapa para nada. En la segunda vas a tener problemas con el pipeline del procesador y la caché." | renderPostMessage 50515}}} |
>> | 157076246066.jpg [Google] [ImgOps] [iqdb] [SauceNAO] ( 39.99KB, 458x458, caja-leche-nido-listo-para-beber-de-190-ml-con-27-.jpg ) {{{">>50478\n>>50515\n\n¿Que alternativas tengo?" | renderPostMessage 50528}}} |
>> | 157076590739.jpg [Google] [ImgOps] [iqdb] [SauceNAO] ( 48.66KB, 730x486, gettyimages-944359454.jpg ) {{{">>50474 (OP)\n>>50478\n>>50515\n>Optimizar un menú de ayuda\nLa definición de autismo en su máxima expresión." | renderPostMessage 50530}}} |
>> | 157077449938.jpg [Google] [ImgOps] [iqdb] [SauceNAO] ( 61.75KB, 800x785, 156559099068.jpg ) {{{">>50530\n\n¿Tu que vas a saber?, de seguro tu programas en Javascript, y te ahorras todo usando cadenas de texto y \"switches\"\n\n>>50477\n\nNo estoy en la memescuela" | renderPostMessage 50536}}} |
>> | {{{"De lo que veo, guarda los comandos en un vector tipo tupla<String,Enum>, ordenalos y luego busca con busqueda binaria el Enum, te ahoras las tablas hash o crear arboles rojo negro, menos consumo de memoria y mas rapido, con menos bifurcaciones.\n\nQue el problema que me imagino que quieres resolver algún tipo de analizador o maquina de estados." | renderPostMessage 50539}}} |
>> | {{{">>50478\n>>50515\n\nBuenos mis negros, gracias por su apoyo de antemano y hacerme la vida tan fácil (tal cual bandeja de plata)\n\n[code]\n#include <iostream>\n#include <string>\n#include <unordered_map>\n\n//Function command\nvoid HelpFunction() {\nstd::cout << \"----Command eneable----\" << std::endl;\nstd::cout << \" >help< Command found\" << std::endl;\nstd::cout << \" >exit< Exit to program\" << std::endl;\n}\n\nvoid ExitFunction() {\nexit(1);\n}\n\n//Command definition\ntypedef void (*pFunction)();\n\nstd::unordered_map<std::string, pFunction> CommandReference {\n {\"help\", HelpFunction}, {\"exit\", ExitFunction}\n};int main() {\nstd::string *CommandBuffer = new std::string;\nstart:\nstd::cout << \">>\";\nstd::getline(std::cin, *CommandBuffer);\nif(CommandReference.end() == CommandReference.find(*CommandBuffer)) {\nstd::cout << \"ERROR\" << std::endl;\n} else {\npFunction CallFunction = CommandReference[*CommandBuffer];\n(*CallFunction)();\n}\ndelete CommandBuffer;\ngoto start;\nreturn 1;\n}\n[/code]\n\nHice esta otra implementación, pero como dijo>>50515\n\n>vas a tener problemas con el pipeline del procesador y la caché.\n\nTratando de investigar mas sobre esa arquitectura de paralelismo que implementa las CPU, imagino que haciendo alguna funcion-objeto y que este en la memoria dinámica, para poder borrarla y cuando la requiera usuario, esta sea convocada. Aun que dudo mucho que esa sea una solución propia y ortodoxa" | renderPostMessage 50540}}} |
>> | {{{">>50539\n\n[code]\n#include <iostream>\n#include <string>\n#include <tuple>\n#include <vector>\n\nenum Reference{\n Help = 1, Exit = 2\n};int main(){\n std::vector< std::tuple<std::string, int> > IndexCommand;\n return 1;\n}[/code]\n\n[code]\n||=== Build: Release in Prototype_testC++20 (compiler: GNU GCC Compiler) ===|\n||error: ld returned 1 exit status|\n||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 3 second(s)) ===|\n\n[/code]\n\nAlgo aquí no funciona anon" | renderPostMessage 50541}}} |
>> | {{{">>50477\n/hilo" | renderPostMessage 50542}}} |
>> | 157080944558.gif [Google] [ImgOps] [iqdb] [SauceNAO] ( 109.37KB, 176x132, 1526371-trump.gif ) {{{">>50540\n>eneable\n>Exit to program\n>new std::string\n>start:\n>goto start;\nSi trabajaras en mi empresa te echaría de una patada en el culo y te demandaría para que me pagues una indemnización a mi por hacerme perder el tiempo." | renderPostMessage 50545}}} |
>> | {{{">>50545\n\n¿Que hay de malo en crear un std::string dinámico? mongolo" | renderPostMessage 50546}}} |
>> | {{{">>50546\n\ncreo que lo mejor sería:\n\n[code]\n\n#include <iostream>\n#include <string>\nusing namespace std;\n\nint main(){\n\ncout<<\"¿es mejor así no crees?<<endl;\n\nreturn 0;\n}\n[/code]\n\nasí te evitas: std::cout::::::::" | renderPostMessage 50547}}} |
>> | {{{">>50547\n\nO mejor, para no evitar conflicto\n\n[code]\n...\n\nusing std::cout;\nusing std::endl;\nusing std::cin;\n\nint main()\n cout << \"¿Mejor asi?\";\n[/code]" | renderPostMessage 50558}}} |
>> | {{{">>50474 (OP)\n\n[code]\n//http://cpp.sh/3ireh\n#include <iostream>\n#include <string>\n#include <vector>\n#include <unordered_map>\n\nusing std::cout;\nusing std::cin;\nusing std::string;\nusing std::endl;\nusing std::vector;\nusing std::unordered_map;\n\nvoid HelpFunction(){\n cout << \" --Commands avaible--\\nHELP\\tShow commands\\nEXIT\\tExit to program\" << endl;\n}\n\nvoid ExitFunction(){\n exit(1);\n}\n\ntypedef void (*pFunction)();\n\nclass InputFunction{\n public:\n void operator()(vector<string> &comm){\n comm.clear();\n SetCommand();\n comm.push_back(*BufferCommand);\n delete BufferCommand;\n }\n void SetCommand(){\n BufferCommand = new string;\n do{\n cout << \">>\";\n std::getline(cin, *BufferCommand);\n }while(BufferCommand->empty());\n }\n private:\n std::string *BufferCommand;\n};\n\nclass MainSystem{\n public:\n void operator()(){\n BufferCommand = new vector<string>;\n this->input(*BufferCommand);\n CallCommand();\n delete BufferCommand;\n }\n void CallCommand(){\n if(IndexReference.end() != IndexReference.find(BufferCommand->at(0))){\n pFunction Command = IndexReference.at(BufferCommand->at(0));\n (*Command)();\n }else{\n cout << \"Command no found\\n\";\n }\n }\n private:\n vector<string> *BufferCommand;\n InputFunction input;\n unordered_map<string, pFunction> IndexReference {\n {\"help\", HelpFunction}, {\"exit\", ExitFunction}\n };\n};\n\nint main(){\n MainSystem System;\n bucle:\n try{\n System();\n } catch( std::bad_alloc){\n return 0;\n }\n goto bucle;\n}\n\n[/code]\n\n¡Listo >>/t/! Gracias por su apoyo, y espero que pronto entrar a la universidad y tambien poder cooperar con mis futuros compañeros, un abrazo de antemano :^)" | renderPostMessage 50559}}} |
>> | {{{">>50559\nAyyy de verdad querias un menu.\n\nNo te compliques la vida, los if else serian la forma mas rapida si no cambia la interfaz, las comparaciones se codifican mucho mas rapido que otros metodos para una cantidad de 30 a 50.\n\nY de optimizacion, no optimizes, nada hasta que aprendas algortimos, arquitectura de computadoras, compiladores y sistemas de analisis de rendimientos o conocidos como profiles." | renderPostMessage 50561}}} |
>> | {{{">>50561\n\nHace un tiempo, un negro de >>/t/ me había hecho la propuesta de que eso se podía \"simplificar\", en un principio utilizaba secuencias de if, pero el planteo otra manera, utilizando hashmaps\n\n>Y de optimizacion, no optimizes, nada hasta que aprendas algortimos, arquitectura de computadoras, compiladores y sistemas de analisis de rendimientos o conocidos como profiles.\n\nPues parece que aun me voy a quedar otra temporada encerrado en mi sótano, investigando en guugle acerca de esos dialectos y conceptos que están fuera de mi limitado entendimiento de chanero betoso\n\n[code]\n//http://cpp.sh/7qe3c\n#include <iostream>\n#include <string>\n#include <vector>\n#include <unordered_map>\n#include <sstream>\n#include <algorithm>\n#include <iterator>\n\nusing std::cout;\nusing std::cin;\nusing std::string;\nusing std::endl;\nusing std::vector;\nusing std::unordered_map;\n\nvoid HelpFunction(){\n cout << \" --Commands avaible--\\nHELP\\tShow commands\\nEXIT\\tExit to program\\nSETNAME\\tSet name\\nABOUT\\tAbout program\" << endl;\n}\n\n//Example function-command\n\nstatic string nameClient;\n\nvoid SetNameFunction(){\n cout << \"What is your name? \";\n std::getline(cin, nameClient);\n cout << \"Hello \" << nameClient << endl;\n}\n\nvoid GetNameFunction(){\n name:\n if(!nameClient.empty())\n cout << \"This program is execute for \" << nameClient << endl;\n else {\n SetNameFunction();\n goto name;\n }\n}\n\nvoid MainCommand(){\n cout << \"Main command call\" << endl;\n}\nvoid SubCommand(){\n cout << \"and sub command call\" << endl;\n}\n\nvoid ExitFunction(){\n exit(1);\n}\n\ntypedef void (*pFunction)();\n\nclass InputFunction{\n public:\n void operator()(vector<string> &comm){\n comm.clear();\n SetCommand();\n SplitCommand(comm);\n delete BufferCommand;\n }\n void SetCommand(){\n BufferCommand = new string;\n do{\n cout << \">>\";\n std::getline(cin, *BufferCommand);\n }while(BufferCommand->empty());\n }\n void SplitCommand(vector<string> &comm){\n BufferStream << *BufferCommand;\n while(std::getline(BufferStream, BufferToken, ' ')){\n comm.push_back(BufferToken);\n }\n }\n private:\n std::stringstream BufferStream;\n string BufferToken;\n string *BufferCommand;\n};\n\nclass MainSystem{\n public:\n void operator()(){\n BufferCommand = new vector<string>;\n this->input(*BufferCommand);\n CallCommand();\n delete BufferCommand;\n }\n void CallCommand(){\n if(IndexReference.end() != IndexReference.find(BufferCommand->at(0))){\n if(BufferCommand->size() >= 2){\n if(IndexSubReference.end() != IndexSubReference.find(BufferCommand->at(1))) {\n pFunction Command = IndexReference.at(BufferCommand->at(0));\n pFunction SubCommand = IndexSubReference.at(BufferCommand->at(1));\n (*Command)();\n (*SubCommand)();\n }else{\n pFunction Command = IndexReference.at(BufferCommand->at(0));\n (*Command)();\n }\n } else {\n pFunction Command = IndexReference.at(BufferCommand->at(0));\n (*Command)();\n }\n }else\n cout << \"Command no found\\n\";\n }\n private:\n vector<string> *BufferCommand;\n InputFunction input;\n unordered_map<string, pFunction> IndexReference {\n {\"help\", HelpFunction}, {\"exit\", ExitFunction}, {\"setname\", SetNameFunction}, {\"about\", GetNameFunction}, {\"main\", MainCommand}\n };\n unordered_map<string, pFunction> IndexSubReference {\n {\"sub\", SubCommand}\n };\n};\n\nint main(){\n do{\n try{\n MainSystem System;\n System();\n } catch( std::bad_alloc){\n return 0;\n }\n }while(1);\n}\n[/code]\n\nEsto es otro ejemplo de lo que queria lograr,, un vector que funcionara como almacenador de dos comandos, [i]comando principal[/i] y [i]sub comando[/i]" | renderPostMessage 50565}}} |
>> | 157089896475.jpg [Google] [ImgOps] [iqdb] [SauceNAO] ( 25.14KB, 396x385, 156077557126.jpg ) {{{"Así es como yo hago los menues.\n\n[code]\n#include <iostream>\n#include <string>\nusing namespace std;\n\nint menu();\n\nint main(){\nint op;\n\ndo{\nop=menu();\n\nswitch(op){\ncase 1:{\n//En caso de que sea uno\nbreak;\n}\ncase 2:{\n//En caso de que sea dos\nbreak;\n}\ncase 3:{\n// En caso de que sea tres\nbreak;\n}\n}\n\n}while(op != 0);\n\nreturn 0;\n}int menu(){\nint op;\n\ndo{\ncout<<\"Opcion 1\"<<endl;\ncout<<\"Opcion 2\"<<endl;\ncout<<\"Opcion 3\"<<endl;\ncin>>op;\nif((op<0)||(op>3)){\ncout<<op<<\" No es una opcion valida\\n\\n\";\n}\n}while((op<0)||(op>3));\n\nreturn op;\n}\n[/code]" | renderPostMessage 50581}}} |
>> | {{{">>50581\n\nJodete, kek" | renderPostMessage 50582}}} |
>> | {{{">>50582\n¿Cual es tu agresividad?\n¿Qué tiene de malo?\nTambién soy novato cualquier corrección se las agradecería." | renderPostMessage 50583}}} |
>> | {{{">>50583\nBorra tu mierda de codigo, scriptkiddie" | renderPostMessage 50584}}} |
>> | {{{">>50583\n\nEs obvio que lo hiciste de forma irónica, [s]como todo el contenido de Hispanichan[/s]" | renderPostMessage 50585}}} |
>> | 157090270855.png [Google] [ImgOps] [iqdb] [SauceNAO] ( 107.46KB, 500x522, 156073158417.png ) {{{">>50584\nNo soy ningún scriptkiddie.\nNo digo que sé programar en 9999 lenguajes de programaciónni tampoco me la paso copiando ni pegando codigo.\n\nSi mi codigo es un poco simple nada más quiere decir que soy un novato.\n\nPero que importa lo que pienses si ni siquiera sabes programar nada más te dedicas a decir que los codigos de los demás son mierdas \"por que sí gege\". Maldito, si de verdad supieras programar relativamente bien me dirías en qué podría mejorar y no hacer un comentario soez y simultáneamente estúpido.\n\nFuente:https://es.wikipedia.org/wiki/Script_kiddie" | renderPostMessage 50586}}} |
>> | {{{">>50474 (OP)\n\n¿Que te parece así?>>50582\n\n[code]\n#include <iostream>\n#include <string>\n#include <vector>\n#include <unordered_map>\n#include <string>\n#include <sstream>\n#include <algorithm>\n#include <iterator>\n\nusing std::cout;\nusing std::cin;\nusing std::endl;\nusing std::string;\nusing std::vector;\nusing std::unordered_map;\nusing std::stringstream;\n\nclass CommanderFunction {\n public:\nvoid operator()() {\nSetCommand();\nSplitCommand();\n}\nvoid SetCommand() {\ndo {\ncout << \">>\";\nstd::getline(cin, BufferCommand);\n} while(BufferCommand.empty());\n}\nvoid GetCommand(string &comm, string &subcomm) {\nif(!BufferString.empty()) {\nif(BufferString.size() >= 2) {\ncomm = BufferString.at(0);\nsubcomm = BufferString.at(1);\n}\nelse {\ncomm = BufferString.at(0);\nsubcomm = \" \";\n }\n}\n}\nvoid SplitCommand() {\nBuffer << BufferCommand;\nwhile(std::getline(Buffer, BufferToken, delim)) {\nBufferString.push_back(BufferToken);\n}\n}\nvoid Garbage() {\nBufferCommand.clear();\nBufferToken.clear();\nBufferString.clear();\nBuffer.clear();\n}\n private:\nstring BufferCommand;\nstring BufferToken;\nvector<string> BufferString;\nstringstream Buffer;\nconst char delim = ' ';\n};\n\nenum IndexReference{\n HELP = 1, GET\n};\n\nenum IndexSubReference{\n NAME = 1\n};\n\nint main() {\n unordered_map<string, IndexReference> IndexCommand {\n {\"help\", HELP},\n {\"get\", GET}\n };\n unordered_map<string, IndexSubReference> IndexSubCommand {\n {\"name\", NAME}\n };\nCommanderFunction input;\nstring Command;\nstring SubCommand;\n start:\n input();\n input.GetCommand(Command, SubCommand);\n switch(IndexCommand[Command]){\n case HELP: {\n cout << \"Help\\n\";\n break;\n }\n case GET: {\n switch(IndexSubCommand[SubCommand]){\n case 1: {\n cout << \"Name by \";\n cout << \"Operator \\n\";\n break;\n }\n default: {\n cout << \"no found!\\n\";\n cout << Command << \" \" << SubCommand << endl;\n }\n }\n break;\n }\n case 0:\n default: {\n cout << \"No found\\n\";\n break;\n }\n }\n input.Garbage();\n goto start;\n}\n\n[/code]" | renderPostMessage 50591}}} |
>> | {{{"[code]\n#include <iostream>\n#include <string>\n#include <string>\n#include <vector>\n#include <unordered_map>\n\nusing std::cout;\nusing std::cin;\nusing std::endl;\nusing std::string;\nusing std::vector;\nusing std::unordered_map;\n\nvector<string> V_TextString = {\"ERROR\", \"String 1\", \"String 2\", \"String 3\", \"String 4\"};\nunordered_map<string, string> M_TextString = {{\"key1\", \"String 1\"}, {\"key2\", \"String 2\"}, {\"key3\", \"String 3\"}};\n\nclass Output {\n public:\n Output(vector<string> &vector_s) {\n VectorString = &vector_s;\n }\n Output(unordered_map<string, string> &map_s) {\n MapString = &map_s;\n }\n void operator()();\n virtual void MessagFunction(int x) const {\n cout << VectorString->at(x) << endl;\n }\n virtual void MessagFunction(string x) const {\n cout << MapString->at(x) << endl;\n }\n \n private:\n vector<string> *VectorString;\n unordered_map<string, string> *MapString;\n };\n\nint main(){\n Output out1(V_TextString);\n Output out2(M_TextString);\n out1.MessagFunction(1);\n out2.MessagFunction(\"key1\");\n }\n\n[/code]" | renderPostMessage 50613}}} |
>> | {{{"http://www.cplusplus.com/reference/regex/" | renderPostMessage 50698}}} |
>> | {{{">>50476\n>usar [i]switch[/i] ya es hacer uso técnicamente de ASM en C/C++\n¿Que tiene ver el switch con Assembler? Sino mal recuerdo la forma de ejecutar Ensamblador en C/C++ es usando inline assembly como se explica en https://reversebytes.wordpress.com/2012/12/13/como-hacer-inline-assembly-en-lenguaje-c-dev-c/\n>>50477\nSecundo, además de que OP debió haber preguntado en >>46357 en lugar de hacer el enésimo hilo sobre la misma mierda.\n>>50545\n>>start:\n>>goto start; \nNo sabia que aun se pudiera hacer eso en C++ moderno." | renderPostMessage 51460}}} |