переполнение вектора

помогите с проблемой : компилятор ругается на переполнение вектора в цикле (примерно на 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;

}

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