ITADN

Values added to a vector with `push_back` cannot be used immediately

#453Openpepijn-devries 创建于 2025-04-26
P
pepijn-devriescommented
I'm using a `writable::integers` to store results in an iterative process, where I want to use elements from the vector of integers in the process and update them. However, when I `push_back()` a value to the vector, and then immediately check its value I will get some random number. Weirdly, when the vector is returned to R it seems to look fine. It is illustrated in the reprex below where I print the value that I just pushed back to the vector. Am I doing something wrong? ``` r library(cpp11) #> Warning: package 'cpp11' was built under R version 4.3.3 cpp_function(" writable::integers test() { writable::integers x((R_xlen_t)0); for (int i = 0; i < 10; i++) { x.push_back(i); Rprintf(\"When I want to us the integer x[i], I get %i instead of %i\\n\", x[i], i); } return x; } ") test() #> When I want to us the integer x[i], I get -1107622224 instead of 0 #> When I want to us the integer x[i], I get -1107622224 instead of 1 #> When I want to us the integer x[i], I get -1107622224 instead of 2 #> When I want to us the integer x[i], I get -1107622224 instead of 3 #> When I want to us the integer x[i], I get -1107622224 instead of 4 #> When I want to us the integer x[i], I get -1107622224 instead of 5 #> When I want to us the integer x[i], I get -1107622224 instead of 6 #> When I want to us the integer x[i], I get -1107622224 instead of 7 #> When I want to us the integer x[i], I get -1107622224 instead of 8 #> When I want to us the integer x[i], I get -1107622224 instead of 9 #> [1] 0 1 2 3 4 5 6 7 8 9 ``` <sup>Created on 2025-04-26 with [reprex v2.0.2](https://reprex.tidyverse.org)</sup>
1 条评论