在C++中通过类传递2D数组

Passing 2D array through the class in C++

本文关键字:2D 数组 C++      更新时间:2023-10-16

我想创建一个浮动的2D数组,将其传递给某个类,该类在其一个函数中更改数组的元素并返回此数组。重要的是,我不想在类中创建数组的副本。最好的方法是什么?我读到有人建议使用大的1D阵列而不是2D,有些人建议使用矢量。这是最有效的(就时间而言)方法吗?

数组在C++中是通过引用传递的,所以如果您只是将数组传递到需要更改它的任何函数中,那么它就会保留这些更改。不需要任何复杂的东西。基本上只是:

type array[num1][num2];
//fill it with values here
yourObject.arrayChanger(array);

这里是一个使用单个向量的2d数组实现。这是一个模板,所以你只需要制作一个array_2d,一切都可以正常工作。

这种方法有几个优点:

  • 无需担心数组衰减为指针
  • 1D矢量不会像std::vector<std::vector<float> >那样分割内存
  • 内存管理是为您完成的,因此内存泄漏的可能性很小
 #include <string>
 #include <iterator>
 #include <iostream>
 #include <algorithm>
 #include <array>
 using std::array ;
 array< array<int, 10 > , 20 > a ; //declared 20x10 2 dimension array