程序崩溃。找不到问题所在

Program crashed. Could not find what's wrong

本文关键字:问题 找不到 崩溃 程序      更新时间:2023-10-16
#include <iostream>
#include <vector>
using namespace std;
class Book
{
    int isbn;
    string price;
public:
    void setDetails()
    {
        cout << "ISBN ?" ;
        cin >> isbn;
        cout << "Price ?";
        cin >> price;
    }
    void getDetails()
    {
        cout << "ISBN: " << isbn;
        cout << "Price: " << price;
    }
};
int main()
{
    int a;
    vector<Book> books;
    cout << "How many books to insert ?";
    cin >> a;
    for(int i = 0; i < a; i++)
        {
            books[i].setDetails();
        }
    for(int j = 0; j < a; j++)
        {
            books[j].getDetails();
        }

}

当我运行程序时,在我输入 isbn 值后的那一刻,程序崩溃了。我找不到出了什么问题。我的主要功能有问题吗?

您没有在向量中推送任何元素。您需要使用 push_backresize 推送它们:

int a;
vector<Book> books;
cout << "How many books to insert ?";
cin >> a;
books.resize( a ); // added by jpo38
for(int i = 0; i < a; i++)
{
    books[i].setDetails();
}
for(int j = 0; j < a; j++)
{
    books[j].getDetails();
}

你的向量是空的。尝试添加以下行:

vector<Book> books;
cout << "How many books to insert ?";
cin >> a;
// Add this line:
books.resize(a);

尝试这样更改它,我试过了它的工作原理,

 int a;
    cout << "How many books to insert ?";
    cin >> a;
    vector<Book> books(a);

即先获取大小并用该大小构造向量,这样您就不会遇到分割错误