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

时间:2013-07-12 13:15:17

标签: c++ arrays visual-studio-2010 visual-studio

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

3 个答案:

答案 0 :(得分:3)

数组在C ++中通过引用传递,因此如果您只是将数组传递给需要更改它的任何函数,那么它将保留这些更改。不需要任何复杂的事情。基本上只是:

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

答案 1 :(得分:2)

Here是使用单个向量的二维数组实现。它是一个模板,所以你只需要创建一个array_2d,一切都可以正常工作。

此方法有一些优势:

  • 无需担心数组衰减成指针
  • 1D向量不像std::vector<std::vector<float> >
  • 那样分割内存
  • 内存管理已经为您完成,因此内存泄漏的可能性很小。

答案 2 :(得分:1)

 #include <string>
 #include <iterator>
 #include <iostream>
 #include <algorithm>
 #include <array>

 using std::array ;

 array< array<int, 10 > , 20 > a ; //declared 20x10 2 dimension array