我不明白爲什麼+
和-
操作不適用於Armadillo稀疏矩陣,而*
和/
正常工作。 (根據文檔,+
和-
應該也可以工作link)。加法和減法不適用於犰狳稀疏矩陣
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include<armadillo>
using namespace std;
using namespace arma;
int main(int argc, char** argv) {
sp_mat A(5,6);
A(0,0) = 1;
A(1,0) = 2;
cout << 2 + A << endl;
return 0;
}
看到下面的錯誤。
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:67:0,
from /usr/include/c++/4.8/bits/char_traits.h:39,
from /usr/include/c++/4.8/ios:40,
from /usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iostream:39,
from demo.cpp:1:
/usr/include/c++/4.8/bits/stl_iterator.h:327:5: note: template<class _Iterator> typename std::reverse_iterator<_Iterator>::difference_type std::operator-(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)
operator-(const reverse_iterator<_Iterator>& __x,
^
/usr/include/c++/4.8/bits/stl_iterator.h:327:5: note: template argument deduction/substitution failed:
demo.cpp:28:9: note: mismatched types ‘const std::reverse_iterator<_Iterator>’ and ‘int’
cout<<2-A<<endl;
將值賦給臨時對我來說似乎是相當多餘的。但也許你可以讓我清醒。 – Downvoter
在提供的文檔中,operator +僅與2個稀疏矩陣一起使用。將2添加到矩陣中並不合理...... –
@cad。那麼爲什麼'cout << 2 * A'有效? – chandresh