Мне нужно создать функцию сортировки, которая работает с лямбда-выражениями.Функция будет определена как шаблон.
template <class T>
void Sort(std::vector<T> list, int (*Compare)(T &e1, T &e2));
Для сортировки вектора мне нужно реализовать quickSort.Я пытаюсь решить проблему, но у меня есть запас на момент.Когда я пытаюсь вызвать функцию Sort, компилятор говорит мне, что «идентификатор T не определен».Также я не уверен, как мне следует реализовать алгоритм быстрой сортировки.Я не знаю, как я должен рекурсивно вызывать функцию.
#include<iostream>
#include <vector>
using namespace std;
template <class T>
void Sort(std::vector<T> list, int(*Compare)(T &e1, T &e2)) {
int i = list.begin(), j = list.right();
T pivot = list[(list.begin() + list.end()) / 2];
while (Compare(list[i], list[j]))
{
while (list[i] < pivot)
i++;
while (list[j] > pivot)
j--;
if (i <= j) {
T tmp = list[i];
list[i] = list[j];
list[j] = tmp;
i++;
j--;
}
}
//Here should be a recursively call
}
int main()
{
std::vector<int> vector = { 5,10,2,4 };
Sort(vector, [](T &e1, T &e2) {return e1 > e2; });
}