std :: vector中的意外更改

时间:2013-05-18 20:41:42

标签: c++ struct stdvector

以下是代码:

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;
};

specialMethod被调用后,Matrix.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);
        }
    }

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

2 个答案:

答案 0 :(得分:5)

  if (it->column = n)

应该是:

 if (it->column == n)

你正在进行比较而不是作业。

答案 1 :(得分:2)

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

请注意,如果打开更高的警告级别,编译器会警告此类错误。