Как получить доступ на запись к базовым векторным записям представления range-v3 и присвоить ему значения другого представления? - PullRequest
0 голосов
/ 25 января 2019

Имея матрицу, сохраненную в векторе порядка строк, я хочу получить доступ на запись к представлению столбца (к соответствующим записям вектора).

Можно ли как-то разыменовать представление столбца range-v3 и напрямую присваивать ему значения другого представления? До сих пор я нашел обходной путь, используя zip: view, но я не на 100% удовлетворен решением.

wandbox

std::vector<int> mat_as_vec = rv::ints(1, 12 + 1);
auto col_0 = mat_as_vec | rv::drop(0) | rv::stride(3);
auto col_1 = mat_as_vec | rv::drop(1) | rv::stride(3);
auto col_2 = mat_as_vec | rv::drop(2) | rv::stride(3);

//What I want to write is
auto new_col_0 = rv::zip_with([](auto c1, auto c2) {
    return 10 * c1 + c2;
    }, col_1, col_2);
//and then just dereference the view of col_0 and assign the new_col_0 to it
//*col_0 = new_col_0;

//Workaround:
for ( auto [c0, c1, c2] : rs::zip_view(col_0, col_1, col_2) ){
    c0 = 10 * c1 + c2;
}
...