簡體   English   中英

動態結構數組 C++

[英]Dynamic array of structures C++

我需要使用 C++ 創建一個動態電話列表

因此,我將采用的方法是創建一個簡單的一維動態結構數組,其中每個結構都帶有姓名和電話號碼。

struct Person {
char Name[100];
char Phone_Number[100];};

現在我不確定如何創建一個函數,通過創建一個新結構並添加它來將新條目添加到列表中。 類似的東西

void add () {
Person person1;
cout << "Please enter name:" << endl;
cin.getline(person1.Name, 100, '\n');
cout << "Please enter number:" << endl;
cin.getline(person1.Phone_Number, 100, '\n');
cout << "Successful!" << endl;}

??

您需要使用指針來創建結構的動態數組。 如果您想了解有關指針的更多技術信息,可以查看此頁面

要聲明您的動態數組,您只需要聲明:

int n = 10;
Person* persons = new Person[n];

n將是您的總人數,而persons將是您的動態數組。 您可以以與普通數組相同的方式訪問成員。

cout<<persons[5].Name<<endl;

現在,要添加數組的新成員,您需要增加總人數,使用新大小創建 Person 數組的新實例,然后將舊數組的值復制到新數組中。


void increaseArraySize(int n, Person* persons){
    Person* temp = new Person[n];

    for(int i=0; i < n; i++){
        temp[i] = persons[i];
    }

    persons = new Person[n+1];

    for(int i=0; i < n+1; i++){
        persons[i] = temp[i];
    }

    delete[] temp;
}

void add(int &n, Person* persons){
    Person person1;
    cout << "Please enter name:" << endl;
    cin.getline(person1.Name, 100, '\n');
    cout << "Please enter number:" << endl;
    cin.getline(person1.Phone_Number, 100, '\n');
    cout << "Successful!" << endl;

    increaseArraySize(n, persons);
    persons[n] = person1;
    persons[n] = person1;
    n++;
}

void print(int n, Person* persons){
    for(int i=0; i < n; i++){
        cout<<persons[i].Name<<endl;
        cout<<persons[i].Phone_Number<<endl;
        cout<<endl;
    }
}

int main(){
    int n = 0;
    Person* persons = new Person[n];

    add(n, persons);
    add(n, persons);

    print(n, persons);

    delete[] persons;
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM