簡體   English   中英

Rcpp,C ++:通過引用傳遞一個改變大小的整數向量

[英]Rcpp, C++: Pass by reference for a vector of integers changing size

我昨天剛開始學習Rcpp(一個R和C ++界面),以使我的代碼運行得更快,而且我從你們所有人那里學到了很多東西。 謝謝! 我只是想知道如果我將一個較小尺寸的矢量分配給通過引用傳遞的向量,它是否會引起問題。

if(currValue > maxValue){
  maxgrp = currgrp;
  maxValue = currValue;
}

例如,maxgrp聲明為大小為5的IntegerVector,而currgrp的大小在某些遞歸算法中正在改變,但它不會超過最初聲明的maxgrp的大小。 此外,maxgrp通過引用傳遞,每次調用此函數時都會聲明currgrp。

畢竟,幾次測試運行的返回值似乎是正確的,但我想知道從長遠來看我會遇到一些意想不到的錯誤。

謝謝

如果您使用RcppArmadillo,請使用arma定義所有向量,然后您可以執行此操作

// I'm assuming currgrp is rowvector of arma type

// I'm assuming maxgrp is rowvector of arma type

int ncurrgrp = 1; if(currValue > maxValue){ ncurrgrp = currgrp.n_rows; maxgrp(arma::span(0,ncurrgrp-1) = currgrp; }

通過這種方式,您可以確保使用currgrp元素填充maxgrp的第一個ncurrgrp元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM