📅  最后修改于: 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作为参数传递时,可以使用范围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作为参数传递时,可以使用范围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
总的来说,使用对象数组作为参数传递在C++中是很常见的。可以使用普通数组、std::array或者std::vector等容器来表示对象数组。不同类型的数组之间的传递方式也有所不同,需要根据代码的需要进行选择。