Skip to content

Values added to a vector with push_back cannot be used immediately #453

Open
@pepijn-devries

Description

@pepijn-devries

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?

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

Created on 2025-04-26 with reprex v2.0.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions