2014-12-29 2 views
1

Что такое лучший способ выполнить модуль оператора над вектором или матрицы в C++ Armadillo?C++ броненосца функция модуля


вектора и матрицы классов перегрузки % оператору выполнить поэлементное умножение. Попытка использовать его дает ошибку invalid operands. Я ожидал, что

uvec a = {0, 1, 2, 3}; 
uvec b = a % 2; 
cout << "b" << endl; 

даст следующее:

b: 
    0 
    1 
    0 
    1 
+0

Вам нужно будет сделать это элементарно (например, в цикле). –

ответ

3

'%' оператора для поэлементного умножения матриц. Вы должны создать свой собственный счет:

/** 
* Extend division reminder to vectors 
* 
* @param a  Dividend 
* @param n  Divisor 
*/ 
template<typename T> 
T mod(T a, int n) 
{ 
    return a - floor(a/n)*n; 
} 
+0

Приятная идея --- вы должны отметить, что для этого потребуется использование 'arma :: floor' и указать, что для нее требуются типы векторов броненосца, а не' std :: vector '. – Brian