我有一个课程如下:
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 请帮我解决一下......
答案 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;
}
}