Rcpp,C++:通过引用传递改变大小的整数向量 昨天我刚开始学习RCPP A和C++接口,使我的代码运行得更快,而且我从大家那里学到了很多。谢谢我只是想知道,如果我将一个较小的向量分配给一个通过引用传递的向量,是否会引起问题 if(currValue > maxValue){ maxgrp = currgrp; maxValue = currValue; }

Rcpp,C++:通过引用传递改变大小的整数向量 昨天我刚开始学习RCPP A和C++接口,使我的代码运行得更快,而且我从大家那里学到了很多。谢谢我只是想知道,如果我将一个较小的向量分配给一个通过引用传递的向量,是否会引起问题 if(currValue > maxValue){ maxgrp = currgrp; maxValue = currValue; },c++,pass-by-reference,rcpp,C++,Pass By Reference,Rcpp,其中,maxgrp声明为大小为5的IntegerVector,currgrp的大小在某些递归算法中发生变化,但它不会超过最初声明的maxgrp的大小。此外,maxgrp是通过引用传递的,每次调用此函数时都会声明currgrp 毕竟,在几个测试运行中,返回值似乎是正确的,但我想知道,从长远来看,我会遇到一些意想不到的错误 谢谢如果使用RcppArmadillo,请使用 阿玛,然后你可以做个例子 //我假设currgrp是arma类型的行向量 //我假设maxgrp是arma类型的行向量 int n

其中,maxgrp声明为大小为5的IntegerVector,currgrp的大小在某些递归算法中发生变化,但它不会超过最初声明的maxgrp的大小。此外,maxgrp是通过引用传递的,每次调用此函数时都会声明currgrp

毕竟,在几个测试运行中,返回值似乎是正确的,但我想知道,从长远来看,我会遇到一些意想不到的错误


谢谢

如果使用RcppArmadillo,请使用 阿玛,然后你可以做个例子

//我假设currgrp是arma类型的行向量

//我假设maxgrp是arma类型的行向量

int ncurrgrp=1; ifcurrValue>maxValue{ ncurrgrp=currgrp.n_行; maxgrparma::span0,ncurrgrp-1=currgrp; }


通过这种方式,您可以确保用currgp元素填充maxgrp的第一个ncurrgp元素。

非常感谢!我想知道这是否会将maxgrp中的元素重置为ncurrgp之外的元素?或者在更新maxgrp中的元素之前,是否有函数重置maxgrp null中的元素?使用maxgrparma::spanhere,there.fillarma::datum::nan将从这里到那里的其余元素设置为nan