Ошибка выхода векторного индекса за пределы диапозона
Пишу код для быстрой сортировки. Дан текстовый файл:
10
3
4
-2
51
32
12
11
24
20
99
где первое число это количество строк. Нужно отсортировать строки по возрастанию с помощью быстрой сортировки.
Ошибка: пишет что вышел за пределы вектора
Вот мой код:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
void quickSort(vector<int> vec, int first, int last)
{
int left = first;
int right = last;
int middle = vec[(left + right) / 2];
do {
while (vec[left] < middle)
{
left++;
}
while (vec[right] > middle)
{
right--;
}
if (left < right)
{
int tmp = vec[left];
vec[left] = vec[right];
vec[right] = tmp;
left++;
right--;
}
} while (left < right);
quickSort(vec, first, right);
quickSort(vec, left, last);
}
int main()
{
setlocale(LC_ALL, "rus");
ifstream file("1.txt");
string str;
int number;
vector<int> vec;
while (getline(file, str))
{
number = stoi(str);
vec.push_back(number);
}
vec.erase(vec.begin());
int first = vec[0];
int size = vec.size();
int last = vec[size - 1];
quickSort(vec, first, last);
for (int i = 0; i < size; i++)
{
cout << vec.at(i) << endl;
}
return 0;
}
Вот сама ошибка:
