Я хотел бы создать 2D-массив поплавков, передать его через определенный класс, который изменяет элементы массива в одной из его функций и возвращает этот массив обратно. Важно отметить, что я не хочу создавать копию моего массива внутри класса. Каков наилучший способ сделать это? Я читал, что люди предлагают использовать большой 1D-массив вместо 2D, некоторые люди рекомендуют использовать векторы. Это самый эффективный (с точки зрения времени) способ сделать это?Передача 2D-массива через класс в C++
ответ
Массивы передаются по ссылке в C++, поэтому, если вы просто передаете массив в любую функцию, необходимую для его изменения, тогда он сохранит эти изменения. Не нужно ничего сложного. В основном просто:
type array[num1][num2];
//fill it with values here
yourObject.arrayChanger(array);
Here - это реализация 2-мерного массива с использованием одного вектора. Его шаблон, поэтому вы просто делаете массив_2d, и все работает так, как должно.
Есть несколько преимуществ этого метода:
- Нет необходимости беспокоиться о массиве гниющей в указатель
- 1D-вектор не фрагментировать память, как управление памятью
std::vector<std::vector<float> >
- для вас, поэтому вероятность утечки памяти минимальна.
Спасибо, и мне так нравится! Я рекомендую всем ознакомиться с этим [link] (http://stackoverflow.com/questions/2216017/dynamical-two-dimension-array-according-to-input/2216055#2216055) –
Я думаю, эта тема также интересна: [Представление массива 2d] (http://stackoverflow.com/questions/1946830/multidimensional-variable-size-array-in-c) –
#include <string>
#include <iterator>
#include <iostream>
#include <algorithm>
#include <array>
using std::array ;
array< array<int, 10 > , 20 > a ; //declared 20x10 2 dimension array
- 1. C++ Передача параметра через класс?
- 2. Передача DropDownListFor через класс модели
- 3. C# Передача переменного в класс
- 4. Передача исключений через класс в главное окно
- 5. C# Передача DataSet через пользовательский класс кнопок Не работает
- 6. C++: передача этого указателя в другой класс
- 7. Передача переменных через классы в Objective-C
- 8. Передача ссылки на статический класс C#
- 9. Передача аргументов в функции Python через C++
- 10. Передача аргументов через класс, наследующий от Tkinter
- 11. Передача массива в другой класс - Objective C
- 12. C# Передача ссылки на класс в конструкторе
- 13. Передача значений через формы C#
- 14. Передача переменных через события C#
- 15. Передача переменных через функции C
- 16. Передача строки через функцию. C
- 17. Передача указателя через функцию c
- 18. Передача # строку C через PInvoke
- 19. Передача файла C# через сокеты
- 20. C# Передача сообщения через serialport
- 21. C# - Передача унаследованного класса через параметр
- 22. Передача параметров через события
- 23. Передача параметров через Shell в C
- 24. Передача переменных через функции в C++
- 25. Передача CancellationToken через URI в C#
- 26. Передача pipefd через execlp в C
- 27. Передача структуры через Сокеты в C
- 28. Передача родительского ребенка через каналы в C
- 29. Передача данных через сокет в C
- 30. Передача структуры через несколько функций в C?
что вы имеете в виду под «..which изменяет столбцы массива в ...»? –
Ищите [Трансформация в месте матрицы] (http://en.wikipedia.org/wiki/In-place_matrix_transposition)? – jrok