Ошибки в быстрой сортировке на C++
Написал свой вариант быстрой сортировки на C++. Не могу понять как пофиксить ошибку "начальное значение ссылки на неконстантный параметр должно быть левосторонним значением" в 31 строчке + ошибки в конкатенации векторов. Бьюсь уже долго с этим
Мой код:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
vector <int> concatenate(vector <int>& vec_less, vector <int>& vec_pivot, vector <int>& vec_greater)
{
vec_less.insert(vec_less.end(), vec_pivot.begin(), vec_pivot.end());
vec_less.insert(vec_less.end(), vec_greater.begin(), vec_greater.end());
return vec_less;
}
vector <int> quick_sort(vector <int>& vec)
{
int vec_size = vec.size();
vector <int> less;
vector <int> greater;
if (vec_size < 2)
return vec;
else
{
int pivot = vec[0];
for (int i = 1; i < vec_size; ++i)
{
if (vec[i] < pivot)
less.push_back(vec[i]);
if (vec[i] >= pivot)
greater.push_back(vec[i]);
}
vector <int> vec_piv = { pivot };
vector <int> sorted_vec = concatenate(quick_sort(less), vec_piv, quick_sort(greater));
return sorted_vec;
}
}
vector <int> get_vector()
{
vector <int> vec;
string current_stroke;
while (true)
{
cin >> current_stroke;
if (current_stroke == "q")
break;
vec.push_back(stoi(current_stroke));
}
return vec;
}
int main()
{
vector <int> vec = get_vector();
cout << endl;
int n = vec.size();
for (auto i : vec)
cout << i << "\t";
cout << endl;
vector <int> sorted_vec = quick_sort(vec);
for (auto i : sorted_vec)
cout << i << "\t";
return 0;
}
Источник: Stack Overflow на русском