📜  采用不同数据类型的数组 c++ (1)

📅  最后修改于: 2023-12-03 15:28:30.749000             🧑  作者: Mango

采用不同数据类型的数组 C++

在 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。我们可以通过下标访问数组中的元素,并向其赋值。需要注意的是,由于联合体的大小等于其最大成员的大小,因此我们只能在一个数组元素中存储一个元素。

STL 容器

除了使用结构体和联合体来存储不同类型的数据外,我们还可以使用 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 容器来存储不同类型的数据。选择哪种方法取决于我们的需求、程序复杂度和性能要求。在实际开发过程中,我们应该仔细考虑并选择最适合我们需求的方法。