<div dir="ltr">A ver si lo entiendo:<br><br>En primer termino, defines el constructor de copia.Hasta ahi de acuerdo. Pero cuando sugieres esto:<br><br><span style="font-size: 10pt;">vector<stExample>
destiny  = source;<br><br>dices que source es un vector. La clase vector sobrecarga el operador = y lo que hace es una copia, elemento a elemento del contenido del vector source a destiny, en este caso. Pero el hueco que pretendo llenar es precisamente cuando pones <br>
<br></span><span style="font-size: 10pt;">//lo
llenas como tu quieras<br><br>Precisamente es lo que preguntaba en un principio. Para copiar dos punteros usaria un memcpy y para dos vectores v1 = v2 o incluso el copy, pero me gustaria saber si hay alguna manera de "disfrazar" o hacer un cast del puntero para hacer el copy a un vector, y asi moverme en el mundo STL que es mucho mas amigable.<br>
</span><span style="font-size: 10pt;"><br>Muchas gracias por la respuesta.<br></span>Si alguien me puede sugerir algo mas...<br clear="all">Ferran<br>
<br><br><div class="gmail_quote">2008/10/9 Rolando Kindelan Nuñez <span dir="ltr"><<a href="mailto:rkindelan@uci.cu">rkindelan@uci.cu</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">











<div link="blue" vlink="purple" lang="EN-US">

<div>

<p><i><span style="font-size: 10pt; color: rgb(31, 73, 125);"> </span></i></p>

<p><i><span style="font-size: 10pt;" lang="ES">Bueno
yo no creo que sea necesario una función de <algoritm> para eso, creo que
básicamente lo puedes hacer con el operador= que esta sobrecargado en la clase
vector.h, el único problema es que en la estructura stExample tienes un puntero
y eso evita que la copia se realice automáticamente por el compilador, problema
que puedes revertir sobrecargando el operador = de tu estructura que seria algo
como esto:</span></i></p><div class="Ih2E3d">

<p><i><span style="font-size: 10pt;" lang="ES"> </span></i></p>

<p><span style="font-size: 10pt;">typedef
struct stExample{<br>
    int a; <br>
    int *b;</span></p>

</div><p><span style="font-size: 10pt;">   
const stExample& operator=(const stExample& ste)</span></p>

<p><span style="font-size: 10pt;" lang="ES">   
{</span></p>

<p><span style="font-size: 10pt;" lang="ES">   
    a = ste.a;</span></p>

<p><span style="font-size: 10pt;" lang="ES">      
b = ste.b;  // OJO</span></p>

<p><span style="font-size: 10pt;" lang="ES">/*debes
ver como se debe copiar el puntero b, porque el compilador no puede hacerlo por
sí mismo o de hecho lo hace, pero copia la dirección de memoria y eso
posibilita que al modificar uno el otro se modifique, no es una copia de los
datos que es lo que necesitas.*/        </span></p>

<p><span style="font-size: 10pt;" lang="ES">    
}<br>
};</span></p>

<p><span style="font-size: 10pt;" lang="ES"> </span></p>

<p><span style="font-size: 10pt;" lang="ES">Luego
de esto todo sale natural, declaras tu vector</span></p>

<p><span style="font-size: 10pt;">vector<stExample>
source;</span></p>

<p><span style="font-size: 10pt;"> </span></p>

<p><span style="font-size: 10pt;">//lo
llenas como tu quieras</span></p>

<p><span style="font-size: 10pt;"> </span></p>

<p><span style="font-size: 10pt;" lang="ES">y
para copiarlo solo necesitas:</span></p>

<p><span style="font-size: 10pt;" lang="ES"> </span></p>

<p><span style="font-size: 10pt;">vector<stExample>
destiny  = source;</span></p>

<p><span style="font-size: 10pt;"> </span></p>

<p><span style="font-size: 10pt;">saludos.</span></p>

<p> </p>

<p><i><span style="font-size: 10pt; color: rgb(31, 73, 125);"> </span></i></p>

<p><i><span style="font-size: 10pt; color: rgb(31, 73, 125);"> </span></i></p>

<p style="text-align: right;" align="right"><span style="font-size: 10pt; color: red;" lang="ES">________________________________</span></p>

<p style="text-align: right;" align="right"><span style="font-size: 10pt; color: red;"><img alt="untitled" width="23" height="22"></span><span style="font-size: 10pt; color: red;"> </span><b><i><span style="font-size: 9pt; color: rgb(18, 60, 238);" lang="ES">rolo.</span></i></b><b><i><span style="font-size: 10pt; color: rgb(18, 60, 238);" lang="ES"></span></i></b></p>


<p style="text-align: right;" align="right"><b><i><span style="font-size: 10pt; color: rgb(18, 60, 238);" lang="ES"> </span></i></b></p>

<p style="text-align: right;" align="right"><i><span style="font-size: 9pt; color: rgb(18, 60, 238);" lang="ES">La
risa es la distancia más corta entre dos personas. (Victor Borge)</span></i></p>

<p><i><span style="font-size: 10pt; color: rgb(31, 73, 125);" lang="ES"> </span></i></p>

<div style="border-style: solid none none; border-color: rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color; border-width: 1pt medium medium; padding: 3pt 0in 0in;">

<p><b><span style="font-size: 10pt;" lang="ES">From:</span></b><span style="font-size: 10pt;" lang="ES">
<a href="mailto:cconclase-bounces@listas.conclase.net" target="_blank">cconclase-bounces@listas.conclase.net</a> </span><span style="font-size: 10pt;">[mailto:<a href="mailto:cconclase-bounces@listas.conclase.net" target="_blank">cconclase-bounces@listas.conclase.net</a>]
<b>On Behalf Of </b>Ferran Ferri<br>
<b>Sent:</b> Thursday, October 09, 2008 7:15 AM<br>
<b>To:</b> Lista de correo sobre C y C++<br>
<b>Subject:</b> [C con Clase] Copiar de puntero a std::vector</span></p>

</div><div><div></div><div class="Wj3C7c">

<p> </p>

<div>

<p>hola,<br>
<br>
si tengo un tipo definido cualquiera, como por ejemplo:<br>
<br>
typedef struct stExample{<br>
    int a; <br>
    int *b;<br>
};<br>
<br>
Ahora digamos que dentro de mi clase tengo un vector de ese tipo:<br>
<br>
vector<stExample> examples;<br>
<br>
y que tengo una funcion que me devuelve un puntero a un array de ese mismo
tipo:<br>
<br>
stExample* foo();<br>
<br>
Para copiar el puntero a vector, se que puedo ir extrayendo uno por uno los
elementos de stExample con un bucle y copiarlos<br>
<br>
stExample a = foo();<br>
for(...){<br>
    examples.push_back(stExample[i++]);<br>
}<br>
<br>
Mi pregunta es si seria posible usar la funcion copy de <algorithm> para
copiarlo de una vez en dentro del vector. Lo digo por que el codigo se veria
mucho mejor y ademas no tengo que checkear tantos errores yo mismo teniendo la
magnifica libreria STL.<br>
<br>
Muchas gracias<br clear="all">
Ferran</p>

</div>

</div></div></div>

</div>


<br>_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br></blockquote></div><br></div>