-1

私は次のようなクラスを持っています:

class Descriptor
{

public:

float   xi, yi;     
vector<double>  fv;         
Descriptor()
{
}

Descriptor(float x, float y, vector<double> const& f)
{
    xi = x;
    yi = y;
    fv = f;
}
};

また、次のような記述子のベクトルがあります。vector<Descriptor> keypoint;

ここで、fv が double のベクトルであることを考慮して、イテレータを使用してキーポイントの要素を出力したいと考えています。

私はこのコードを書きました

vector<Descriptor>::iterator it;

for(it=keypoint.begin();it!=keypoint.end();it++){
    cout<<it->xi <<"---"<<it->yi<<endl; 
    double* f = it->fv.data();
    for(int i=0; i<it->fv.size();i++){
        cout<<*f<<endl;
        f++;
    }
}

しかし、たとえば xi=3 と yi=4 と fv=[5 6 7] がある場合、次のように fv を 3 回出力します: 3 4 5 6 7 5 6 7 5 6 7 修正方法を教えてください...

4

1 に答える 1

0

あなたのコードは正しいように見えますが、問題を示すテスト コードはありますか? そして、なぜあなたは使用していfますか?とにかく使用しているループでは必要ないようです。使用することをお勧めします

vector<Descriptor>::iterator it;

for(it = keypoint.begin(); it != keypoint.end(); it++){
    cout << it->xi << "---" << it->yi <<endl; 
    for(int i = 0; i < it->fv.size(); i++){
        cout << it->fv[i] << endl;
    }
}
于 2013-08-13T15:32:30.343 に答える