Как в этом случае правильно соединять vector'а?

Есть алгоритм быстрой сортировки, как мне правильно реализовать return, чтобы рекурсия работала?

#include <vector>
#include <iostream>
#include <string>

template<typename T>
void print(T arr) {
    if (arr.empty()) {
        std::cout << "Array is empty.";
        return;
    }
    std::cout << "[";
    std::cout << arr[0];
    for (int i = 1; i < arr.size(); i++) {
        std::cout << " " << arr[i];
    }
    std::cout << "]";
}

template<typename T>
std::vector<T> sort(std::vector<T> arr) {
    if (arr.size() < 2) {
        return arr;
    }

    std::vector<T> pivot(1, arr[0]);

    std::vector<T> left = {};
    std::vector<T> right = {};

    for (int i = 0; i < arr.size(); i++) {
        if (arr[i] <= pivot[0]) {
            left.push_back(arr[i]);
        }
        else if (arr[i] > pivot[0]) {
            right.push_back(arr[i]);
        }
    }

    return sort(left) + pivot + sort(right);
}

int main() {
    std::vector<int> arr = { 124, 23, 21, 123, 6, 3 };
    std::vector<int> sortedArray = sort<int>(arr);
    print(sortedArray);

    return 0;
}

Ответы (0 шт):