C++ 犰狳:将子视图更改为相同的值

C++ 犰狳:将子视图更改为相同的值,c++,c++11,armadillo,C++,C++11,Armadillo,我刚刚开始使用犰狳,我正在尝试将向量中的一些值更改为相同的值。我知道更改为0或1可以很容易地完成 为什么最后一行行不通?我发现做这件事的唯一方法要复杂得多 arma::vec x = arma::linspace<arma::vec>(1, 20, 10); std::cout << x << std::endl; x(arma::find(x > 15)).ones(); std::cout << x <

我刚刚开始使用犰狳,我正在尝试将向量中的一些值更改为相同的值。我知道更改为0或1可以很容易地完成

为什么最后一行行不通?我发现做这件事的唯一方法要复杂得多

    arma::vec x = arma::linspace<arma::vec>(1, 20, 10);
    std::cout << x << std::endl;
    x(arma::find(x > 15)).ones();
    std::cout << x << std::endl;
    x(arma::find(x < 6)) = arma::datum::nan; // this doesn't compile
arma::vecx=arma::linspace(1,20,10);
std::cout试试:

x(arma::find(x<6)).fill(arma::datum::nan);

犰狳有没有办法为这样的东西做AND或ORS?x(arma::find(x<6)和&arma::find(x>1)).fill(arma::datum::nan);这将进行编译,但由于大小错误而导致错误,因为结果是索引而不是布尔值
    arma::uvec idx = find(x < 6);
    arma::vec idxrepl(idx.n_elem);
    idxrepl.fill(arma::datum::nan);
    x.elem(idx) = idxrepl;
    std::cout << x << std::endl;
x(arma::find(x < 6)).fill(arma::datum::nan);