[英]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.