Bubblesort违反了访问

Bubblesort giving access violation

本文关键字:访问 Bubblesort      更新时间:2023-10-16

大家好,我正在尝试完成课堂任务,我需要按照其ID编号对满满员工的文件进行分类。文件中有10行,每个行都有员工信息。订单是id lastname firstName

在我编写排序函数并将所有数据正确复制到数组之前,该程序运行正常,但是现在添加了我的排序功能后,我一直在违反访问范围的情况下,没有提示引起的访问。

我感谢任何帮助。

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Employee
{
public:
    int _id;
    string _lastName;
    string _firstName;
    Employee()
    {
        _id = 0;
        _lastName = "n/a";
        _firstName = "n/a";
    }
};
void copyFile10(Employee [], int);
void sortFile10(Employee [], int);
int main()
{
    const int size10 = 10;
    Employee employees10[size10];
    copyFile10(employees10, size10); //1.fill array/copy file
    sortFile10(employees10, size10); //2. sort
    system("pause");
    return 0;
}
void copyFile10(Employee employees10[], const int size)
{
    ifstream data10("data_10.dat");
    for(int count = 0; count < 10; count++) //1.fill array/copy file
    {
        data10 >> employees10[count]._id;
        data10 >> employees10[count]._lastName;
        data10 >> employees10[count]._firstName;
    }
    data10.close();
}
void sortFile10(Employee employees10[], const int size)
{
    Employee buff1;
    Employee buff2;
    int counter = 0;
    bool ordered = false;
    while (ordered == false)
    {
        for(int count = 0; count < size-1; count++)
        {
            if(employees10[count]._id > employees10[count+1]._id)
            {
                buff1._id = employees10[count+1]._id;
                buff1._lastName = employees10[count+1]._lastName;
                buff1._firstName = employees10[count+1]._firstName;
                buff2._id = employees10[count]._id;
                buff2._lastName = employees10[count]._lastName;
                buff2._firstName = employees10[count]._firstName;
                employees10[count]._id = buff1._id;
                employees10[count]._lastName = buff1._lastName;
                employees10[count]._firstName = buff1._firstName;
                employees10[count+1]._id = buff2._id;
                employees10[count+1]._lastName = buff2._lastName;
                employees10[count+1]._lastName = buff2._lastName;
                counter++;
            }
            if(counter == 0)
            ordered = true;
            else
                counter = 0;
        }
    }
}
for(int count = 0; count < size; count++)
        {
            if(employees10[count]._id > employees10[count+1]._id)

循环的最后一次迭代会发生什么(即count是9时)?