繁体   English   中英

共同映射两个向量元素,并得到EXC_BAD_ACCESS(code = 1,address = 0x0)错误

[英]Comapring two vector elements and get EXC_BAD_ACCESS(code=1, address = 0x0) error

我正在编写一个程序,一次需要比较两个元素(9个元素的向量)以找到最低的元素。 为此,我创建了一个类似于Bubblesort的Sort函数,在排序的最后,我将获取vector的第一个元素(哪一个是最低的)。 我的问题是Xcode告诉我我的方程式指向NULL。 有任何想法吗?

void ParkingLot::GateA(){

vector<int> AvailSpots (9);
AvailSpots[0] = 40;
AvailSpots[1] = 20;
AvailSpots[2] = 50;
AvailSpots[3] = 30;
AvailSpots[4] = 55;
AvailSpots[5] = 15;
AvailSpots[6] = 20;
AvailSpots[7] = 33;
AvailSpots[8] = 27;

vector<string> Lot (9);
Lot[0] = "A";
Lot[1] = "B";
Lot[2] = "C";
Lot[3] = "D";
Lot[4] = "E";
Lot[5] = "F";
Lot[6] = "G";
Lot[7] = "H";
Lot[8] = "I";

vector<int> Cost (9);
Cost[0] = 25.00;
Cost[1] = 22.50;
Cost[2] = 20.00;
Cost[3] = 22.50;
Cost[4] = 20.00;
Cost[5] = 17.50;
Cost[6] = 20.00;
Cost[7] = 17.50;
Cost[8] = 15.00;

vector<int> Distance (9);
Distance[0] = 10;
Distance[1] = 20;
Distance[2] = 30;
Distance[3] = 20;
Distance[4] = 30;
Distance[5] = 40;
Distance[6] = 30;
Distance[7] = 40;
Distance[8] = 50;


int choice2;
cout << "-------------------------------------------------------------------------" << endl;
cout << setw(50) << "GATE A: Lot Information" << endl;
cout << "-------------------------------------------------------------------------" << endl;
cout << "LOT ID :  MAX CAPACITY :      AVAILABLE SPOTS :  COST($DD.CC) : DISTANCE" << endl;
cout << "-------------------------------------------------------------------------" << endl;
cout <<   Lot[0] << ":       40 :          "<<AvailSpots[0]<<":  "<<setw(20)<<"     "<<Cost[0]<<" : "   <<Distance[0] << endl;
cout <<   Lot[1] << ":       20 :          "<<AvailSpots[1]<<":  "<<setw(20)<<"     "<<Cost[1]<<" : "   <<Distance[1] << endl;
cout <<   Lot[2] << ":       50 :          "<<AvailSpots[2]<<":  "<<setw(20)<<"     "<<Cost[2]<<" : "   <<Distance[2] << endl;
cout <<   Lot[3] << ":       30 :          "<<AvailSpots[3]<<":  "<<setw(20)<<"     "<<Cost[3]<<" : "   <<Distance[3] << endl;
cout <<   Lot[4] << ":       55 :          "<<AvailSpots[4]<<":  "<<setw(20)<<"     "<<Cost[4]<<" : "   <<Distance[4] <<endl;
cout <<   Lot[5] << ":       15 :          "<<AvailSpots[5]<<":  "<<setw(20)<<"     "<<Cost[5]<<" : "   <<Distance[5] <<endl;
cout <<   Lot[6] << ":       20 :          "<<AvailSpots[6]<<":  "<<setw(20)<<"     "<<Cost[6]<<" : "   <<Distance[6] << endl;
cout <<   Lot[7] << ":       33 :          "<<AvailSpots[7]<<":  "<<setw(20)<<"     "<<Cost[7]<<" : "   <<Distance[7] << endl;
cout <<   Lot[8] << ":       27 :          "<<AvailSpots[8]<<":  "<<setw(20)<<"     "<<Cost[8]<<" : "   <<Distance[8] << endl;
cout << " Total :           290 :         "<<TotalAvailSpots<<":" << endl;

cout << "Select a criteria to allot a parking lot :" << endl;
cout << "1. Based on Cost - Cheapest Parking Lot" << endl;
cout << "2. Based on Distance - Closest to Stadium" << endl;
cout << "0. EXIT" << endl;
cout << "Enter Option (1-2):  " << endl;
cin >> choice2;


if (choice2 == 1) {

    ParkingLot::Sort();

}

}



int ParkingLot::Sort(){

        int cost;
        for (int i = 0; i < 8; i++){
                if (Cost[i] > Cost[i + 1]) { /////////////ERROR APPEARS HERE Thread1:EXC_BAD_ACCESS(code=1, address=(0x0)
                    ParkingLot::Swap(i, i+1);
            }

        }
        cout << "Cost of parking lot " << Cost.front() << endl;
        cin >> cost;
        return cost;
    }


void ParkingLot::Swap(int a, int b){

        int tmp = Cost[a];
        Cost[a] = Cost[b];
        Cost[b] = tmp;

    }

您在GateA中定义的变量是函数的局部变量,并隐藏任何具有相同名称的成员变量。

因此,您在Sort and Swap使用的Cost向量为空,因为它与GateA构建的GateA

删除线

vector<int> Cost (9);

GateA调用,而是在分配元素之前调用Cost.resize(9) ,或者使用push_back而不是直接索引构建矢量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM