У меня есть класс следующим образом:Итерации по вектору
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;
Теперь я хочу, чтобы напечатать элементы характерной точки, используя итераторы с учетом Ф.В. является вектором двойного.
Я написал этот код
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++;
}
}
но если я, например, х = 3 и уг = 4 и бс = [5 6 7] он печатает бс три раза, как это: 3 4 5 6 7 5 6 7 5 6 7 , пожалуйста, помогите мне, как исправить ...
Показать фактический код, самую маленькую программу, которую вы можете написать, которая компилирует, запускает и демонстрирует проблему. Поскольку '' --- "' не отображается нигде в вашем примере вывода, вывод не из фрагмента кода, который вы показали. –
Код, который вы опубликовали, хотя и немного странный в использовании арифметики указателя, должен работать как ожидалось ([демонстрация] (http://ideone.com/fpjxVp)). Предположительно, вектор не содержит того, что, по вашему мнению, он делает. Не могли бы вы опубликовать какой-нибудь код (желательно, небольшую, полную программу), чтобы показать, как вы заполняете вектор до получения этого вывода? –
Ваш код выглядит правильно, я бы предпочел 'for (int i = 0; i fv.size(); i ++) {cout < fv [i] ...' вместо вашего указателя на double. –
alexbuisson