如何比较2个向量中的对象?

时间:2016-05-24 21:39:39

标签: c++ oop vector

void compare(vector<Customer>&compare,vector<CarProperties>&cars,int customer_number)
{
    int c = customer_number;
    for(int i =0; i<=cars.size(); i++)
    {
        if(cars[i].getname() == compare[c].getCustomerDesiredCar())
            break;
        cout << "Enter car is available for rent"<<endl;
    }
}

这里我比较2个向量,汽车向量包含汽车并比较向量比较用户输入的汽车名称乘汽车向量。每当我尝试运行它时,我的编译器在此函数崩溃,否则程序运行正常。

2 个答案:

答案 0 :(得分:1)

您收到错误是因为您正在访问向量的最后一个元素。我建议另类:

bool isCarAvailable( const std::string& desiredCar, const vector<CarProperties>& cars) {
    for(int i =0; i<cars.size(); i++)  { 
        if(cars[0].getname() == desiredCar) {
             return true;
         }
     } 
     return false;
}

你可以运行这样的功能:

if (isCarAvailable(compare[c].getCustomerDesiredCar(), cars))
{
    cout <<"Available"<<endl
}

答案 1 :(得分:0)

我猜你可能想要像这样重写你的功能:

void compare(Customer const& customer, vector<CarProperties> const& cars)
{
for(unsigned i = 0; i< cars.size(); i++)
{
    if(cars[i].getname() == customer.getCustomerDesiredCar()) {
        cout<<"Enter car is available for rent"<<endl;
        break;
    }   
}
}