0

这是代码:

typedef struct Triplet
{
    double value;
    int row;
    int column;
};

class Matrix
{
public:
//Some methods
double specialMethod(/*params*/);
private:
    std::vector<Triplet> elements;
    int nRows;
    int nColumns;
};

被调用后specialMethodMatrix.element 中的值已损坏。但是除了像这样迭代之外,他们什么也没做:

std::vector<Triplet>::iterator it;
std::vector<Pair> buff;
for (it = this->elements.begin(); it != this->elements.end(); ++it)
    {

        if (it->column = n)
        { 
            Pair p;
            p.key = it->row;
            p.value = it->value;
            buff.push_back(p);
        }
    }

不知道从哪里开始寻找错误。

4

2 回答 2

5
  if (it->column = n)

应该:

 if (it->column == n)

你在做比较而不是分配。

于 2013-05-18T20:42:46.193 回答
2

如果可能,将 n 定义为 const 值并在 if 指令中反转比较顺序 - 就像这样:if(n == it->column)。编译器将帮助您找到类似的错误。

请注意,如果打开更高的警告级别,编译器无论如何都会警告这种错误。

于 2013-05-18T21:11:31.700 回答