用vector存储信息,编译时异常

用vector存储信息,编译时异常

#include
#include
using namespace std;
 
class xinxi
{
public:
    void xingxi(const char* l,int a, double b,const char* c)
    {
        vector<const char*>a4;
        a4.push_back(l);
        vector<int>a1;
        a1.push_back(a);
        vector<double>a2;
        a2.push_back(b);
        vector<const char*>a3;
        a3.push_back(c);
        cout << "库存的水果信息如下:" << endl;
        cout << a4.at(1) << "  " << endl;
        cout << a1.at(1) <<"kg"<< "  " << endl;
        cout << a2.at(1) << "元"<<"  " << endl;
        cout << a3.at(1) << "  " << endl;
 
        cout << a4.at(2) << "  " << endl;
        cout << a1.at(2) <<"kg"<<  "  " << endl;
        cout << a2.at(2) << "元"<< "  " << endl;
        cout << a3.at(2) << "  " << endl;
 
        cout << a4.at(3) << "  " << endl;
        cout << a1.at(3) <<"kg"<<  "  " << endl;
        cout << a2.at(3) << "元"<< "  " << endl;
        cout << a3.at(3) << "  " << endl;
    }
};
int main()
{
    xinxi q;
    q.xingxi("红美人", 100, 15.3, "象山");
    q.xingxi("车厘子", 78, 48.8, "智利");
    q.xingxi("香梨", 132, 7.8, "新疆");
    return 0;
}

错误信息:错误信息:0x00007FFE5A5ACD29 处(位于 储存库存信息.exe 中)有未经处理的异常: Microsoft C++ 异常: std::out_of_range,位于内存位置 0x00000010D9DBF410 处。

帮你改了代码:

#include<iostream>
#include<vector>
using namespace std;

class xinxi
{
public:
    vector<const char*> name;
    vector<int> weight;
    vector<double> price;
    vector<const char*> origin;

    void xingxi(const char* l,int a, double b,const char* c)
    {
        name.push_back(l);
        weight.push_back(a);
        price.push_back(b);
        origin.push_back(c);
    }

    void print_info()
    {
        cout << "库存的水果信息如下:" << endl;
        for (int i = 0; i < name.size(); i++)
        {
            cout << name[i] << "  " << endl;
            cout << weight[i] <<"kg"<< "  " << endl;
            cout << price[i] << "元"<<"  " << endl;
            cout << origin[i] << "  " << endl;
        }
    }
};
int main()
{
xinxi q;
q.xingxi("红美人", 100, 15.3, "象山");
q.xingxi("车厘子", 78, 48.8, "智利");
q.xingxi("香梨", 132, 7.8, "新疆");
q.print_info();
return 0;
}

在这个修改后的版本中,每次调用函数xinxi时都会将水果信息存储在类的成员变量中。然后,使用函数print_info输出所有水果的信息。