
vetor.erase(n)? On Oct 17, 2013 4:39 PM, "Augusto Ribas" <ribas.aca@gmail.com> wrote:
Ola pessoal.
Eu estou com uma dificuldade em como fazer uma chamada recursiva usando o Rcpp.
Por curiosidade, eu estava fazendo alguns códigos aqui usando o Rcpp, só por experiencia. Ai eu estava implementando o código para o insertion sort ( http://pt.wikipedia.org/wiki/Insertion_sort)
Minha duvida é a seguinte:
#Suponha que eu tenho um vetor qualquer:
vetor<-sample(100) vetor
#Iterativamente, eu fiz um código para usar com o Rcpp assim:
library(Rcpp)
cppFunction(" NumericVector insertionsortC(NumericVector vetor) { int n = vetor.size();
double aux; int i , j;
for(i=1;i<n;i++) { aux=vetor[i]; j=i-1; while(j>=0 && vetor[j]>aux) { vetor[j+1]=vetor[j]; j=j-1; } vetor[j+1]=aux; } return vetor; } ")
#Funcionou beleza. Ai eu fui tentar repetir a tentativa, recursivamente
cppFunction(" NumericVector insertionsortRC(NumericVector vetor, int n) {
double aux; int i;
if(n>1) { insertionsortRC(vetor,n-1); aux=vetor[n-1]; i=n-1; while(vetor[i-1]>aux && i>=0 ) { vetor[i]=vetor[i-1]; i--; } vetor[i]=aux; }
return vetor; } ")
#E assim funcionou blz, mas eu tive que começar a mandar o argumento n, #que é o tamanho do vetor
#o que eu queria é fazer algo aqui, na chamada recursiva
#insertionsortRC(vetor,n-1);
#sei la, se eu conseguir tirar o ultimo elemento, eu posso suprimir esse n-1 #Eu não entendo de Rcpp e C++ muito bem. #Mas tem uma forma simples de mudar o tamanho do vetor, ou arrancar o ultimo elemento dele #algo tipo vetor.pop()
#pra fazer a chamada ficar tipo #vetor.pop(); #insertionsortRC(vetor); #que ai no inicio da chamada eu uso o int n = vetor.size(); igual ao formato iterativo. #Bem, espero não estar sendo muito confuso na pergunta e que a função funcione. #Mas imagino que deve ser super simples isso.
Agradeço a atenção desde ja :)
-- Grato Augusto C. A. Ribas
Site Pessoal: http://recologia.com.br/ <http://augustoribas.heliohost.org> Github: https://github.com/Squiercg Lattes: http://lattes.cnpq.br/7355685961127056
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.