遍历向量
Iterate through a vector
我有一个类如下:
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 6 5 6 7请帮我纠正它…
您的代码看起来是正确的,您有任何测试代码来证明这个问题吗?为什么要使用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;
}
}
相关文章:
- 在遍历处理程序的向量时注册和注销处理程序
- 遍历unordered_map向量
- 如何正确地推回然后遍历堆中对象的向量?
- 将树节点添加到向量向量中的 n 元树遍历的平均和最坏情况时间复杂度是多少?
- 为什么即使使用 for 循环遍历我的向量,它也没有输出到控制台?(C++)
- 执行错误访问 遍历向量
- 尝试重载输出运算符时,我无法遍历对象向量
- 遍历向量与数组哪个更快?
- 遍历对象向量,并找到与从文本文件中提取的对象匹配的变量
- 遍历包含 c++ 中指针的向量
- 如何遍历地图向量
- 遍历抽象类的向量
- 使用迭代器遍历向量并修改内容
- 遍历向量<向量<对<int, int> > >
- 如何遍历特定字符串的向量
- 循环遍历向量<string>并保持每个元素"count"时出现问题
- 如何使用 c++11 语法创建 for 循环以遍历向量
- 使用 auto 遍历指针的常量向量
- 在C 中的字符串向量的字符串元素中循环遍历所有字符
- 使用另一个向量遍历向量的特定元素