Вы используете функциональный стиль программирования для получения чистых побочных эффектов, это не очень элегантно, и это не то, как unaryExpr
предполагается использовать. Я бы предложил std::vector<int>
для c
и цикл for, чтобы прояснить ваши намерения:
std::vector<int> c = {0, 2, 5, 7};
for(auto i:c) a[i] = b[i];
или используя голову Эйгена:
a(c) = b(c);
с c
либо VectorXi
, либо std::vector<int>
или чем-то еще ...