2013-07-12 3 views
2

Я хотел бы создать 2D-массив поплавков, передать его через определенный класс, который изменяет элементы массива в одной из его функций и возвращает этот массив обратно. Важно отметить, что я не хочу создавать копию моего массива внутри класса. Каков наилучший способ сделать это? Я читал, что люди предлагают использовать большой 1D-массив вместо 2D, некоторые люди рекомендуют использовать векторы. Это самый эффективный (с точки зрения времени) способ сделать это?Передача 2D-массива через класс в C++

+0

что вы имеете в виду под «..which изменяет столбцы массива в ...»? –

+0

Ищите [Трансформация в месте матрицы] (http://en.wikipedia.org/wiki/In-place_matrix_transposition)? – jrok

ответ

3

Массивы передаются по ссылке в C++, поэтому, если вы просто передаете массив в любую функцию, необходимую для его изменения, тогда он сохранит эти изменения. Не нужно ничего сложного. В основном просто:

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

Here - это реализация 2-мерного массива с использованием одного вектора. Его шаблон, поэтому вы просто делаете массив_2d, и все работает так, как должно.

Есть несколько преимуществ этого метода:

  • Нет необходимости беспокоиться о массиве гниющей в указатель
  • 1D-вектор не фрагментировать память, как управление памятью std::vector<std::vector<float> >
  • для вас, поэтому вероятность утечки памяти минимальна.
+0

Спасибо, и мне так нравится! Я рекомендую всем ознакомиться с этим [link] (http://stackoverflow.com/questions/2216017/dynamical-two-dimension-array-according-to-input/2216055#2216055) –

+0

Я думаю, эта тема также интересна: [Представление массива 2d] (http://stackoverflow.com/questions/1946830/multidimensional-variable-size-array-in-c) –

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 
Смежные вопросы