在C/C 中使用vector存放結(jié)構(gòu)體類型變量
在C/C 中,常常需要使用容器來存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),其中vector是一個(gè)常見且方便的選擇。在vector中存放結(jié)構(gòu)體struct類型的變量有兩種主要方法。第一種是存放結(jié)構(gòu)體類型變量的副本,第二種是存放
在C/C 中,常常需要使用容器來存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),其中vector是一個(gè)常見且方便的選擇。在vector中存放結(jié)構(gòu)體struct類型的變量有兩種主要方法。第一種是存放結(jié)構(gòu)體類型變量的副本,第二種是存放指向結(jié)構(gòu)體類型變量的指針。
存放結(jié)構(gòu)體類型變量的副本
```cpp
include
include
include
typedef struct student {
char school_name[100];
char gender;
int age;
bool is_absent;
} StudentInfo;
typedef std::vector
void print(StudentInfoVec *studentinfovec) {
for (int j 0; j < (*studentinfovec).size(); j ) {
std::cout << (*studentinfovec)[j].school_name << " ";
std::cout << (*studentinfovec)[j].gender << " ";
std::cout << (*studentinfovec)[j].age << " ";
std::cout << (*studentinfovec)[j].is_absent << std::endl;
}
}
int main() {
StudentInfo micheal {"Micheal", 'm', 18, false};
StudentInfo cherry {"Cherry", 'f', 16, true};
StudentInfoVec studentinfovec;
studentinfovec.push_back(micheal);
studentinfovec.push_back(cherry);
print(studentinfovec);
system("pause");
return 0;
}
```
存放指向結(jié)構(gòu)體類型變量的指針
```cpp
include
include
include
typedef struct student {
char* school_name;
char gender;
int age;
bool is_absent;
} StudentInfo;
typedef std::vector
void print(StudentInfoPtrVec* studentinfoptrvec) {
for (int j 0; j < (*studentinfoptrvec).size(); j ) {
std::cout << (*studentinfoptrvec)[j]->school_name << " ";
std::cout << (*studentinfoptrvec)[j]->gender << " ";
std::cout << (*studentinfoptrvec)[j]->age << " ";
std::cout << (*studentinfoptrvec)[j]->is_absent << std::endl;
}
}
int main() {
StudentInfoPtrVec studentinfoptrvec;
char* p_char_1 NULL;
p_char_1 new char[100];
strcpy(p_char_1, "Micheal");
StudentInfo* p_student_1 new StudentInfo;
p_student_1->school_name p_char_1;
p_student_1->gender 'm';
p_student_1->age 18;
p_student_1->is_absent false;
studentinfoptrvec.push_back(p_student_1);
char* p_char_2 NULL;
p_char_2 new char[100];
strcpy(p_char_2, "Cherry");
StudentInfo* p_student_2 new StudentInfo;
p_student_2->school_name p_char_2;
p_student_2->gender 'f';
p_student_2->age 16;
p_student_2->is_absent false;
studentinfoptrvec.push_back(p_student_2);
print(studentinfoptrvec);
delete p_char_1;
delete p_student_1;
delete p_char_2;
delete p_student_2;
system("pause");
return 0;
}
```
通過以上兩種方式,我們可以靈活地在C/C 中使用vector來存放結(jié)構(gòu)體類型的變量,并根據(jù)實(shí)際需求選擇適合的存儲(chǔ)方式。