通过向量迭代

时间:2013-08-13 13:55:21

标签: c++ iteration

我有一个课程如下:

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

我也有这样的Descriptor向量: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 4 5 6 7 5 6 7 5 6 7 请帮我解决一下......

1 个答案:

答案 0 :(得分: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;
    }
}