📅  最后修改于: 2023-12-03 15:28:30.749000             🧑  作者: Mango
在 C++ 中,数组是一种将相同类型的数据元素存储在一起的数据结构。但有时候我们需要在数组中存储不同类型的数据。这种情况下,我们可以使用结构体或联合体来实现,这些结构体或联合体可以用作数组的元素。
结构体是一种用户定义的数据类型,用于组合不同类型的数据。它由多个具有不同数据类型的变量组成。我们可以使用结构体来创建一个包含不同类型数据的数组。
以下是使用结构体定义的数组:
struct Employee {
int id;
char name[20];
float salary;
};
int main() {
Employee employees[2];
employees[0].id = 1;
strcpy(employees[0].name, "John");
employees[0].salary = 35000.0;
employees[1].id = 2;
strcpy(employees[1].name, "Jane");
employees[1].salary = 45000.0;
return 0;
}
这个程序定义了一个结构体 Employee
,包含了员工的 ID、姓名和薪资。然后创建了一个 Employee
类型的数组,大小为 2。我们可以通过下标访问数组中的元素,并向其属性赋值。
联合体是另一种用户定义的数据类型。与结构体不同,联合体只允许存储一个元素。联合体的大小等于其最大成员的大小。这意味着,联合体中不同元素的大小必须相同。
以下是使用联合体定义的数组:
union Data {
int i;
float f;
char str[20];
};
int main() {
Data data[3];
data[0].i = 10;
data[1].f = 3.14;
strcpy(data[2].str, "Hello");
return 0;
}
这个程序定义了一个联合体 Data
,包含了一个整数、一个浮点数和一个字符串。然后创建了一个 Data
类型的数组,大小为 3。我们可以通过下标访问数组中的元素,并向其赋值。需要注意的是,由于联合体的大小等于其最大成员的大小,因此我们只能在一个数组元素中存储一个元素。
除了使用结构体和联合体来存储不同类型的数据外,我们还可以使用 C++ STL(标准模板库)中的容器来存储不同类型的数据。例如,可以使用 std::vector
模板类来存储不同类型的数据。
以下是使用 STL 容器存储不同类型的数据:
#include <vector>
#include <string>
int main() {
std::vector<std::string> names;
std::vector<int> ids;
std::vector<float> salaries;
names.push_back("John");
names.push_back("Jane");
ids.push_back(1);
ids.push_back(2);
salaries.push_back(35000.0);
salaries.push_back(45000.0);
return 0;
}
这个程序使用三个 std::vector
容器,分别存储了员工的名字、ID 和薪资。我们可以使用 push_back()
方法向容器中添加元素。由于 std::vector
容器是模板类,因此可以存储不同类型的数据。
在 C++ 中,我们可以使用结构体、联合体或 STL 容器来存储不同类型的数据。选择哪种方法取决于我们的需求、程序复杂度和性能要求。在实际开发过程中,我们应该仔细考虑并选择最适合我们需求的方法。