<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.23532">
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT color=#0000ff size=4 face=Arial><STRONG>Windows
XP</STRONG></FONT></DIV>
<BLOCKQUOTE
style="BORDER-LEFT: #000000 2px solid; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px">
<DIV dir=ltr>
<DIV>
<DIV>@<SPAN
style="FONT-FAMILY: arial,sans-serif; WHITE-SPACE: nowrap; FONT-SIZE: 13px; FONT-WEIGHT: bold">Mauro
Sznelwar</SPAN></DIV></DIV>
<DIV>Qual sistema operacional você esta usando?</DIV>
<DIV>Parece que o erro tem haver de estar faltando alguma coisa, o compilador
de c++?</DIV>
<DIV>Eu uso o ubunto aqui, e ja veio junto o compilador, o compilador está
instalado ae certinho?</DIV>
<DIV>Na verdade eu não entendo muito bem de rcpp, estou apenas testando, mas
talvez seja algo nesse sentido o erro ae. Aqui funciona normal o codigo.</DIV>
<DIV><BR></DIV>
<DIV><BR></DIV>
<DIV>E o vetor.erase(n) não funcionou :(</DIV>
<DIV><BR></DIV>
<DIV>Quando eu tentei assim, deu uma msg de erro:<BR></DIV>
<DIV><BR></DIV>
<DIV>library(Rcpp)<BR></DIV>
<DIV>vetor<-sample(100)<BR></DIV>
<DIV><BR></DIV>
<DIV>> cppFunction("</DIV>
<DIV>+ NumericVector insertionsortRC(NumericVector vetor)
{</DIV>
<DIV>+ int n = vetor.size();</DIV>
<DIV>+ double aux;</DIV>
<DIV>+ int i;</DIV>
<DIV>+ if(n>1) {</DIV>
<DIV>+ vetor.erase(n);</DIV>
<DIV>+ insertionsortRC(vetor);</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>+ return vetor;</DIV>
<DIV>+ }</DIV>
<DIV>+ ")</DIV>
<DIV>> insertionsortRC(vetor)</DIV>
<DIV>*** Error in `/usr/lib/R/bin/exec/R': malloc(): memory corruption:
0x098db548 ***</DIV>
<DIV><BR></DIV>
<DIV>Ai eu pensei se tinha algo haver com o indice, ai tentei com n-1, assim
no vetor.erase(n-1)</DIV>
<DIV><BR></DIV>
<DIV>
<DIV>> vetor</DIV>
<DIV> [1] 33 31 86 25 70 40 88
81 13 85 87 39 60 64 10
82 89 14 66 36 15 96 26</DIV>
<DIV> [24] 4 54 29 83 55 68 91
6 100 51 7 53 99 65 23 94
57 90 32 47 16 50 28</DIV>
<DIV> [47] 3 98 11 18 76 63 77
74 49 8 97 12 27 35 79
80 20 67 93 5 56 9 37</DIV>
<DIV> [70] 24 92 69 38 44 17 46
43 34 19 2 95 72 1 61
41 62 22 42 21 84 48 78</DIV>
<DIV> [93] 73 30 59 58 52 75 71
45</DIV>
<DIV><BR></DIV>
<DIV>> insertionsortRC(vetor)</DIV>
<DIV> [1] 3.607393e-313 3.300000e+01 3.100000e+01
8.600000e+01 2.500000e+01 7.000000e+01</DIV>
<DIV> [7] 4.000000e+01 8.800000e+01 8.100000e+01
1.300000e+01 8.500000e+01 8.700000e+01</DIV>
<DIV>[13] 3.900000e+01 6.000000e+01 6.400000e+01
1.000000e+01 8.200000e+01 8.900000e+01</DIV>
<DIV>[19] 1.400000e+01 6.600000e+01 3.600000e+01
1.500000e+01 9.600000e+01 2.600000e+01</DIV>
<DIV>[25] 4.000000e+00 5.400000e+01 2.900000e+01
8.300000e+01 5.500000e+01 6.800000e+01</DIV>
<DIV>[31] 9.100000e+01 6.000000e+00 1.000000e+02
5.100000e+01 7.000000e+00 5.300000e+01</DIV>
<DIV>[37] 9.900000e+01 6.500000e+01 2.300000e+01
9.400000e+01 5.700000e+01 9.000000e+01</DIV>
<DIV>[43] 3.200000e+01 4.700000e+01 1.600000e+01
5.000000e+01 2.800000e+01 3.000000e+00</DIV>
<DIV>[49] 9.800000e+01 1.100000e+01 1.800000e+01
7.600000e+01 6.300000e+01 7.700000e+01</DIV>
<DIV>[55] 7.400000e+01 4.900000e+01 8.000000e+00
9.700000e+01 1.200000e+01 2.700000e+01</DIV>
<DIV>[61] 3.500000e+01 7.900000e+01 8.000000e+01
2.000000e+01 6.700000e+01 9.300000e+01</DIV>
<DIV>[67] 5.000000e+00 5.600000e+01 9.000000e+00
3.700000e+01 2.400000e+01 9.200000e+01</DIV>
<DIV>[73] 6.900000e+01 3.800000e+01 4.400000e+01
1.700000e+01 4.600000e+01 4.300000e+01</DIV>
<DIV>[79] 3.400000e+01 1.900000e+01 2.000000e+00
9.500000e+01 7.200000e+01 1.000000e+00</DIV>
<DIV>[85] 6.100000e+01 4.100000e+01 6.200000e+01
2.200000e+01 4.200000e+01 2.100000e+01</DIV>
<DIV>[91] 8.400000e+01 4.800000e+01 7.800000e+01
7.300000e+01 3.000000e+01 5.900000e+01</DIV>
<DIV>[97] 5.800000e+01 5.200000e+01 7.500000e+01</DIV>
<DIV>> </DIV></DIV>
<DIV><BR></DIV>
<DIV>Ai não funcionou. Mandando o vetor e o n junto, tudo funcionava, então
acho que estou realizando alguma operação errada na chamada recursiva
ali.</DIV>
<DIV><BR></DIV>
<DIV>Olhando a descrição do comando aqui:</DIV>
<DIV><A
href="http://www.cplusplus.com/reference/vector/vector/erase/">http://www.cplusplus.com/reference/vector/vector/erase/</A><BR></DIV>
<DIV><BR></DIV>
<DIV>Ele diz que apaga da memoria o valor, então imagino que talvez esteja
dando problema na volta da recursão. Acho que não é tão simples usar Rcpp
quanto imaginava.</DIV>
<DIV>Quando no primeiro caso la ele diz "memory corruption: 0x098db548", esse
é o endereço de memoria que eu usei errado não é?</DIV>
<DIV><BR></DIV>
<DIV><BR></DIV>
<DIV><BR></DIV></DIV>
<DIV class=gmail_extra><BR><BR> </DIV></BLOCKQUOTE></BODY></HTML>