-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 是双精度向量。

我写了这段代码

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 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 回答