переполнение вектора
помогите с проблемой : компилятор ругается на переполнение вектора в цикле (примерно на 51 строчке) , когда i=6,j=5 . Хотя у меня в файле 8 строк , можете пожалуйста обьяснить каким образом произошло переполнение ? не совсем понятно p.s 51-строка отмечена
#include <iostream>
#include <Windows.h>
#include <string>
#include <fstream>
#include <vector>
int main()
{
setlocale(LC_ALL, "rus");
HANDLE hConsole;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
std::vector<std::string> archive;//вектор строк
int schet;// номер строки
std::ifstream Library;
Library.open("input.txt");//открытие файла
if (!Library)//если файл не открыт , то вывод сообщения об ошибке
{
std::cout << "Unable to open file" << std::endl;
exit(1);
}
while (!Library.eof())
{
std::string line;
std::getline(Library, line);
archive.push_back(line);//считывание строк из файла в archive
}
Library.close();
std::vector<int> numbers(archive.size());//вектор индексов
for (int i = 0; i < archive.size(); i++) numbers[i] = i;//массив индексов строк
for (int i = 0; i < archive.size(); i++) //вывод строк на экран
{
std::cout << archive[i] << std::endl;
}
for (int i = 0; i < archive.size(); i++)
{
schet = 1;
for (int j = 0; j < i; j++)
{
(51) if (archive[numbers[i]]> archive[numbers[j]])
schet++;
}
for (int j = i + 1; j < archive.size(); j++)
{
if (archive[numbers[i]] > archive[numbers[j]])
schet++;
}
numbers[i] = schet;
}
for (int i = 0; i < archive.size(); i++) //вывод строк на экран
{
std::cout << numbers[i] << '\t';
std::cout << archive[i] << std::endl;
}
return 0;
}