У меня проблемы с созданием библиотеки в VC9, но ранее она была успешно построена в VC6.Вот часть кода:
size_t pos2find;
pos2find = J;
std::vector<size_t>::iterator it(&pos2find);
А вот ошибка:
error C2664: 'std::_Vector_iterator<_Ty,_Alloc>::_Vector_iterator(const std::_Vector_iterator<_Ty,_Alloc> &)' : cannot convert parameter 1 from 'size_t *' to 'const std::_Vector_iterator<_Ty,_Alloc> &'
1> with
1> [
1> _Ty=size_t,
1> _Alloc=std::allocator<size_t>
1> ]
1> Reason: cannot convert from 'size_t *' to 'const std::_Vector_iterator<_Ty,_Alloc>'
1> with
1> [
1> _Ty=size_t,
1> _Alloc=std::allocator<size_t>
1> ]
1> No constructor could take the source type, or constructor overload resolution was ambiguous
Я ценю любую помощь.
РЕДАКТИРОВАТЬ: Код отбиблиотека с открытым исходным кодом под названием "surfit", это не мой код, так что я думаю, что это изменилось в стандарте векторного класса.Затем итератор используется в другой стандартной функции:
std::vector<size_t>::iterator * ptr_from = fault->sort_by_first_begin;
std::vector<size_t>::iterator * ptr;
ptr = std::lower_bound(ptr_from,
fault->sort_by_first_end,
it,
ptr_size_t_less);
РЕДАКТИРОВАТЬ: я думаю, что я нашел решение.После просмотра std :: lower_bound ():
template <class ForwardIterator, class T, class Compare>
ForwardIterator lower_bound ( ForwardIterator first, ForwardIterator last,
const T& value, Compare comp );
Return iterator to lower bound
Returns an iterator pointing to the first element in the sorted range [first,last) which does not compare less than value. The comparison is done using either operator< for the first version, or comp for the second.
For the function to yield the expected result, the elements in the range shall already be ordered according to the same criterion (operator< or comp).
С этим я просто исключил итератор it и использовал lower_bound (first, last, & pos2find, comp);