📌  相关文章
📜  在C++中将对象数组作为参数传递(1)

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

在C++中,可以通过将对象数组作为参数来传递一组对象。这在许多情况下都是很有用的,特别是当需要处理多个对象时。

可以使用普通的数组或std::array或std::vector等STL容器来表示对象数组。不同类型的数组之间的传递方式也有所不同。

使用普通数组作为参数传递

下面是一个例子,演示如何使用普通数组作为参数传递:

#include <iostream>

class MyClass {
public:
    MyClass(int value) : m_value(value) {}

    int getValue() const { return m_value; }

private:
    int m_value;
};

// 使用普通数组作为参数
void printMyClassArray(MyClass arr[], int size) {
    for (int i = 0; i < size; ++i) {
        std::cout << arr[i].getValue() << " ";
    }
}

int main() {
    MyClass arr[] = {MyClass(1), MyClass(2), MyClass(3)};
    int size = sizeof(arr) / sizeof(arr[0]);
    
    printMyClassArray(arr, size);

    return 0;
}

在上述代码中,printMyClassArray函数接受两个参数:一个MyClass对象数组和数组大小。函数使用for循环遍历数组并输出每个对象的值。

使用std::array作为参数传递

使用std::array作为参数传递时,可以使用范围for循环来遍历数组,如下所示:

#include <iostream>
#include <array>

class MyClass {
public:
    MyClass(int value) : m_value(value) {}

    int getValue() const { return m_value; }

private:
    int m_value;
};

// 使用std::array作为参数
void printMyClassArray(std::array<MyClass, 3> arr) {
    for (const auto& obj : arr) {
        std::cout << obj.getValue() << " ";
    }
}

int main() {
    std::array<MyClass, 3> arr = {MyClass(1), MyClass(2), MyClass(3)};

    printMyClassArray(arr);

    return 0;
}

在上述代码中,printMyClassArray函数接受一个std::array<MyClass, 3>类型的参数。函数使用范围for循环遍历数组并输出每个对象的值。

使用std::vector作为参数传递

使用std::vector作为参数传递时,可以使用范围for循环遍历数组,如下所示:

#include <iostream>
#include <vector>

class MyClass {
public:
    MyClass(int value) : m_value(value) {}

    int getValue() const { return m_value; }

private:
    int m_value;
};

// 使用std::vector作为参数
void printMyClassArray(std::vector<MyClass> arr) {
    for (const auto& obj : arr) {
        std::cout << obj.getValue() << " ";
    }
}

int main() {
    std::vector<MyClass> arr = {MyClass(1), MyClass(2), MyClass(3)};

    printMyClassArray(arr);

    return 0;
}

在上述代码中,printMyClassArray函数接受一个std::vector类型的参数。函数使用范围for循环遍历数组并输出每个对象的值。

总的来说,使用对象数组作为参数传递在C++中是很常见的。可以使用普通数组、std::array或者std::vector等容器来表示对象数组。不同类型的数组之间的传递方式也有所不同,需要根据代码的需要进行选择。