,我發現了錯誤:C++ find_if找不到謂語
no matching function for call to ‘findByPosition::findByPosition(std::vector<int>::size_type&, std::vector<int>::size_type&)’
當我投i
& k
到int
我得到:
no matching function for call to ‘findByPosition::findByPosition(int, int)’
我不知道什麼是根本我的謂詞有問題。我重載()
運營商需要:
struct findByPosition
{
const Node needle;
findByPosition(const Node& sought) : needle(sought) {}
bool operator()(int i,int j) const
{
return ((needle.i == i) && (needle.j == j));
}
};
SparseMatrix& SparseMatrix::operator*=(const SparseMatrix &other)
{
SparseMatrix SparseMatrixResult(_numRow, other._numCol);
vector<Node>::iterator rowMulti, colMulti;
if(_numCol != other._numRow)
{
// error multiplying
}
for(std::vector<int>::size_type i = 0; i != (unsigned int)_numRow; i++) {
for(std::vector<int>::size_type j = 0; j != (unsigned int)_numCol; j++) {
for(std::vector<int>::size_type k = 0; k != (unsigned int)_numCol; k++)
{
rowMulti = find_if(_matrix.begin(), _matrix.end(), findByPosition(i,k));
}
}
}
*this = SparseMatrixResult;
return *this;
}
_matrix
的類型爲:
vector<Node> _matrix;
你怎麼用rowMulti如果您發現該元素?我只看到幾個循環,但沒有做其他任何事情? – billz