mask_array ---> valarray
От: gencoder  
Дата: 03.03.17 14:09
Оценка:
Как заставить компилятор понимать выражения в 4 и 6 для x и y как valarray, а не как mask_array?
std::valarray<float> x = {1,2,3,4,22,1}; // 1
std::valarray<float> y = {1,2,3,4,5,6}; // 2
x[y<3.f]=1.f; // 3 - ok
x[y<3.f]*=0.5f; // 4 - error: no match for ‘operator*=’ (operand types are ‘std::mask_array<float>’ and ‘float’)
x[y<3.f]=y[y<3.f]; // 5 - ok
x[y<3.f]=2.f*y[y<3.f]; // 6 - error: no match for ‘operator*’ (operand types are ‘float’ and ‘std::mask_array<float>’)



P.S.

в 4 было задумано все элементы массива x с индексами idx=y<3 умножить на 0.5,

в 6 всем элементам массива х с индексами idx=y<3 присвоить 2*y[idx]
cpp stl
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.