有什么办法可以把 uvec 变成 vec 吗?

Is there any way to turn a uvec into vec?

想这样做:

#include <armadillo>


int main(){    
    arma::mat mat=arma::randn(5,5);    
    mat.each_col( [](arma::vec& vec){
        vec=arma::sort_index(vec);
    } );          
    return 0;

有没有办法把uvec变成vec?

使用arma::conv_to<DesiredType>::from(value).

见下文

#include <armadillo>


int main(){
    arma::mat mat=arma::randn(5,5);

    mat.print("mat");

    mat.each_col( [](arma::vec& vec){
                      vec = arma::conv_to<arma::vec>::from(arma::sort_index(vec));
                  } );

    mat.print("mat");

    return 0;
}

有了这个,我们可以将 arma::sort_index 的输出,即 arma::uvec,转换为 arma::vec,赋值就可以了。