Как инициализировать и Uninitialize многомерный массив символов в C++?Многомерный массив символов
ответ
Прочитано FAQ - вы найдете все, что вам нужно!
Creation:
Статически выделяются:
char mda[ dim1_size ][ dim2_size ]...[ dimn_size ];
Динамически выделяются: Вложенные new[]
вызовы.
Initialization:
Уплотненный для петель; как много размеров for
.
Унификация: Вы имеете в виду Destruction?
Статически выделяется: компилятор делает это, когда фрейм стека разматывается (или для глобальных переменных - когда программа перестает работать).
Динамически выделяются:
Using nested delete[].
вы можете инициализировать многомерный массив так:
int grid[2][3] = {1, 3, 5, 2, 4, 6};
в этом случае Seperate значения будут:
grid[0, 0]: 1
grid[0, 1]: 3
grid[0, 2]: 5
grid[1, 0]: 2
grid[1, 1]: 4
grid[1, 2]: 6
Быстрый фрагмент - он компилируется в g ++.
int rows = 10;
int cols = 10;
char** array = new char*[rows];
for(int i = 0; i < cols; ++i) {
array[i] = new char[cols];
}
//do stuff with array
for(int i = 0; i < cols; ++i) {
delete array[i];
}
delete array;
О, мой бог, это ужасно. Это C с маскировкой C++! –
Это интересно, и это требует серьезного взгляда.
Ответ дается Им широко используется один, но мне нравится его наблюдение - только потому, что он компилирует не означает, что она работает
Я думаю, что лучшее решение было бы выделить contigious блока памяти (строки * cols), а затем рассматривать его как 2D-массив?
Было бы интересно выделить непрерывный блок памяти, но при этом вы теряете любую возможность изменять размер вашего массива в каждом измерении. –
Предлагаю вам использовать библиотеку Boost.Multi_Array. Размер массива должен быть предоставлен во время компиляции, но размеры используются только во время выполнения. Это означает, что у вас есть преимущества динамического распределения без боли при решении проблем с памятью.
Здесь приведен пример из Boost documentation.
int
main() {
// Create a 3D array that is 3 x 4 x 2
typedef boost::multi_array<double, 3> array_type;
typedef array_type::index index;
array_type A(boost::extents[3][4][2]);
// Assign values to the elements
int values = 0;
for(index i = 0; i != 3; ++i)
for(index j = 0; j != 4; ++j)
for(index k = 0; k != 2; ++k)
A[i][j][k] = values++;
// Verify values
int verify = 0;
for(index i = 0; i != 3; ++i)
for(index j = 0; j != 4; ++j)
for(index k = 0; k != 2; ++k)
assert(A[i][j][k] == verify++);
return 0;
}
Я узнал его с крестики нолики борту
const int ROW = 3;
const int COLUMN = 3;
char board [ROW] [COLUMN] = {{'O', 'X', 'O'},
{'X', 'X', 'X'},
{'X', 'O', 'X'}};
Я надеюсь, что это помогло.
- 1. 2d/многомерный массив символов
- 2. Изменить многомерный массив символов
- 3. многомерный массив символов?
- 4. печати многомерный массив символов
- 5. Многомерный массив символов в c
- 6. C: глобально определить многомерный массив символов
- 7. ввод строк в многомерный массив символов?
- 8. Преобразования строки в многомерный массив символов C#
- 9. Многомерный массив символов в функции C
- 10. Многомерный массив символов (массив строк) в типах python
- 11. Динамический многомерный массив
- 12. проверки многомерный массив существует другой многомерный массив
- 13. Многомерный массив указателей на многомерный массив
- 14. Многомерный массив, действующий странно
- 15. Многомерный массив - массив массивов?
- 16. Многомерный массив
- 17. Многомерный массив
- 18. многомерный массив
- 19. многомерный массив
- 20. многомерный массив
- 21. Многомерный массив
- 22. многомерный массив
- 23. многомерный массив
- 24. Многомерный массив
- 25. Многомерный массив
- 26. Многомерный массив
- 27. многомерный массив
- 28. многомерный массив указателей
- 29. HTML многомерный массив PHP многомерный массив - массив перезаписаны
- 30. flipping многомерный массив java
В зависимости от языка. И что вы подразумеваете под uninitialize? – tehvan
Я должен быть слепым, вы уже указали в C++: S – tehvan
Домашний тег устарел. –