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 に答える