Я пытался написать общую быструю сортировку, используя итераторы, но когда я скомпилировал ее, я получил эту ошибку:
"В экземпляре 'void QuickSortRec (std :: vector, Iter, Iter) [с T = int; Iter = __gnu_cxx :: __ normal_iterator>] ': Iterators.cpp: 49: 53: требуется отсюда Iterators.cpp: 133: 28: ошибка: нет совпадения для' operator / '(типы операндов: __gnu_cxx :: __ normal_iterator>'и 'int') Iter pivot (_begin + (_end / 2)); "
Это мой код:
template<typename T, typename Iter>
void QuickSortRec(std::vector<T> _vector, Iter _begin, Iter _end)
{
Iter pivot(_begin + (_end / 2));
Iter left(_begin);
Iter right(_end);
while (left <= right)
{
while (*left < *pivot)
{
++left;
}
while (*right > *pivot)
{
--right;
}
if (*left >= *right)
{
Swap(left, right);
++left;
--right;
}
}
if (_begin < right)
{
QuickSortRec(_vector, _begin, right);
}
if (left < _end)
{
QuickSortRec(_vector, left, _end);
}
}
template<typename Iter>
void Swap(Iter _a, Iter _b)
{
Iter temp(_b);
*_b = *_a;
*_a = *temp;
}