Título: 2 dudas sobre templates y char[] Publicado por: Shout en 21 Julio 2013, 18:12 pm Hola!!
Estoy repasando algunas cosas de C++ que aprendí hace tiempo, y al parecer se me ha olvidado un poco, porque no encuentro la manera de tener estas 2 cosas juntas. Esta es mi función: Código
Al usarla (swapVariables(char*, char*) / swapVariables(int*, int*)), me funciona bien, pero lo que quiero es:
Saludos! Título: Re: 2 dudas sobre templates y char[] Publicado por: amchacon en 21 Julio 2013, 21:22 pm agregar delete para eliminar la variable temporal (estoy haciendo loops de 1.000.000 iteraciones y cada optimización cuenta). Al no usar new creo que no se puede usar delete, pero si sabéis alguna alternativa, me gustaría verla ¿Variable temporal? Yo no veo que hayas creado ninguna variable en memoria dinámica...De todas formas, puedes usar delete en cualquier puntero. Ahora, si ese puntero no apunta a memoria reservada dinámicamente dará un error de ejecución. poder usar la función pasándole char[] en vez de char* sin tener que copiar y pegarla, cambiar el nombre y añadir los corchetes A la hora de pasar argumentos a una función, char[] y char* son equivalentes (no son más que comodidades sintácticas).Otra cosa es, que cambies los valores de los punteros en vez de las cadenas ;) Título: Re: 2 dudas sobre templates y char[] Publicado por: Shout en 21 Julio 2013, 21:37 pm A la hora de pasar argumentos a una función, char[] y char* son equivalentes (no son más que comodidades sintácticas). Pero si hago:Otra cosa es, que cambies los valores de los punteros en vez de las cadenas ;) Código me da error: Citar error C2075: 'temp' : array initialization needs curly braces error C2106: '=' : left operand must be l-value error C2106: '=' : left operand must be l-value Y algo más, ¿a qué te refieres con "cambiar los valores de los punteros en vez de las cadenas"? ¿Te refieres a esto? Código Porque si lo hago así no me funciona Título: Re: 2 dudas sobre templates y char[] Publicado por: amchacon en 21 Julio 2013, 21:49 pm Citar "cambiar los valores de los punteros en vez de las cadenas"? Me refiero algo tal que así: Código
Yo creo que más eficiente que eso no puede haber... En todo caso se puede hacer una funcion "inline". Título: Re: 2 dudas sobre templates y char[] Publicado por: Shout en 21 Julio 2013, 21:55 pm No, sigue sin funcionar :huh:
Código
Citar error LNK2019: unresolved external symbol "void __cdecl swapVariables<char [6]>(char (*)[6],char (*)[6])" (??$swapVariables@$$BY05D@@YAXPAY05D0@Z) referenced in function _main Título: Re: 2 dudas sobre templates y char[] Publicado por: amchacon en 21 Julio 2013, 22:08 pm No, sigue sin funcionar :huh: No, tienes que declarar unos punteros que apunten al array.Código
Fijate otra vez en mi ejemplo. Título: Re: 2 dudas sobre templates y char[] Publicado por: Shout en 21 Julio 2013, 22:21 pm Sigue sin funcionar
Código
Citar error LNK2019: unresolved external symbol "void __cdecl swapVariables<char *>(char * *,char * *)" (??$swapVariables@PAD@@YAXPAPAD0@Z) referenced in function _main Aunque igualmente no lo usaré, ya que necesito crear 2 punteros y el objetivo es hacer un swap con la mínima distracción posible Título: Re: 2 dudas sobre templates y char[] Publicado por: lapras en 22 Julio 2013, 00:50 am A mi esto me funciona:
Código
Output: Código: aaa,bbb Título: Re: 2 dudas sobre templates y char[] Publicado por: Shout en 22 Julio 2013, 18:33 pm A mi esto me funciona: const char? :huh:Código
Output: Código: aaa,bbb ¿Las constantes se pueden modificar así de fácil? Sabía que se podía con punteros, ¿pero tan fácil? Por cierto, a mi también me funciona así, lo que no me funciona es al usar char lol[] Título: Re: 2 dudas sobre templates y char[] Publicado por: amchacon en 22 Julio 2013, 19:11 pm const char? :huh: Lo que es constante es el valor, el puntero es variable.¿Las constantes se pueden modificar así de fácil? Sabía que se podía con punteros, ¿pero tan fácil? Por cierto, a mi también me funciona así, lo que no me funciona es al usar char lol[] Para que fuese constante el puntero también habría que poner: Código
Aunque igualmente no lo usaré, ya que necesito crear 2 punteros y el objetivo es hacer un swap con la mínima distracción posible Solo hay que crearlos una vez, los puedes crear antes del algoritmo y no contarán para su eficiencia. |