<p dir="ltr">vetor.erase(n)? </p>
<div class="gmail_quote">On Oct 17, 2013 4:39 PM, "Augusto Ribas" <<a href="mailto:ribas.aca@gmail.com">ribas.aca@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Ola pessoal.<div><br></div><div>Eu estou com uma dificuldade em como fazer uma chamada recursiva usando o Rcpp.</div><div><br></div><div>Por curiosidade, eu estava fazendo alguns códigos aqui usando o Rcpp, só por experiencia.</div>

<div>Ai eu estava implementando o código para o insertion sort  (<a href="http://pt.wikipedia.org/wiki/Insertion_sort" target="_blank">http://pt.wikipedia.org/wiki/Insertion_sort</a>)</div><div><br></div><div>Minha duvida é a seguinte:</div>

<div><br></div><div>#Suponha que eu tenho um vetor qualquer:</div><div><br></div><div><div>vetor<-sample(100)</div><div>vetor</div></div><div><br></div><div>#Iterativamente, eu fiz um código para usar com o Rcpp assim:</div>

<div><br></div><div><div>library(Rcpp)</div><div><br></div><div>cppFunction("</div><div>    NumericVector insertionsortC(NumericVector vetor) {</div><div>        int n = vetor.size();</div><div><br></div><div>        double aux;</div>

<div>        int i , j;</div><div><br></div><div>        for(i=1;i<n;i++) {</div><div>            aux=vetor[i];</div><div>            j=i-1;</div><div>            while(j>=0 && vetor[j]>aux) {</div><div>
                vetor[j+1]=vetor[j];</div>
<div>                j=j-1;</div><div>                }</div><div>            vetor[j+1]=aux;</div><div>            }</div><div>        return vetor;</div><div>        }</div><div>")</div></div><div><br></div><div><br>

</div><div>#Funcionou beleza. Ai eu fui tentar repetir a tentativa, recursivamente</div><div><br></div><div><div>cppFunction("</div><div>    NumericVector insertionsortRC(NumericVector vetor, int n) {</div><div><br>
</div>
<div>        double aux;</div><div>        int i;</div><div><br></div><div>        if(n>1) {</div><div>            insertionsortRC(vetor,n-1);</div><div>            aux=vetor[n-1];</div><div>            i=n-1;</div><div>

            while(vetor[i-1]>aux && i>=0 ) {</div><div>                vetor[i]=vetor[i-1];</div><div>                i--;</div><div>                }</div><div>            vetor[i]=aux;</div><div>            }</div>

<div><br></div><div>        return vetor;</div><div>        }</div><div>    ")</div></div><div><br></div><div>#E assim funcionou blz, mas eu tive que começar a mandar o argumento n, </div><div>#que é o tamanho do vetor</div>

<div><br></div><div>#o que eu queria é fazer algo aqui, na chamada recursiva</div><div><br></div><div>#insertionsortRC(vetor,n-1);<br></div><div><br></div><div>#sei la, se eu conseguir tirar o ultimo elemento, eu posso suprimir esse n-1</div>

<div>#Eu não entendo de Rcpp e C++ muito bem.</div><div>#Mas tem uma forma simples de mudar o tamanho do vetor, ou arrancar o ultimo elemento dele</div><div>#algo tipo vetor.pop()</div><div><br></div><div>#pra fazer a chamada ficar tipo</div>

<div>#vetor.pop();<br></div><div>#insertionsortRC(vetor);<br></div><div>#que ai no inicio da chamada eu uso o int n = vetor.size(); igual ao formato iterativo.<br></div><div>#Bem, espero não estar sendo muito confuso na pergunta e que a função funcione.</div>

<div>#Mas imagino que deve ser super simples isso.</div><div><br></div><div>Agradeço a atenção desde ja :)</div><div><div><br></div>-- <br><div dir="ltr"><div>Grato<br>Augusto C. A. Ribas</div>
<div> </div>
<div>Site Pessoal: <a href="http://recologia.com.br/" target="_blank">http://recologia.com.br/</a><a href="http://augustoribas.heliohost.org" target="_blank"></a></div><div>Github: <a href="https://github.com/Squiercg" target="_blank">https://github.com/Squiercg</a></div>


<div>Lattes: <a href="http://lattes.cnpq.br/7355685961127056" target="_blank">http://lattes.cnpq.br/7355685961127056</a><br></div></div>
</div></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div>