Форум программистов, компьютерный форум CyberForum.ru

n-мерный массив - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Vorox
 Аватар для Vorox
25 / 24 / 3
Регистрация: 26.11.2010
Сообщений: 57
30.01.2011, 21:29     n-мерный массив #1
Вопрос заключается в следующем:
Как задать n-мерный массив в описании класса, если на начальной стадии неизвестна его размерность?
Или по другому, необходимо чтобы при переполнении n-мерного массива(выход за рамки дозволенного диапазона например типа long int) добавлялась n+1 размерность, как то так.
Ваши идейные соображения?
П.С. желательно без использования класса vector
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2011, 21:29     n-мерный массив
Посмотрите здесь:

C++ 3-х мерный массив+Строки+функции
Двух мерный массив. C++
C++ динамический 2-х мерный массив
2-х мерный массив. C++
1 мерный массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
30.01.2011, 21:39     n-мерный массив #2
Приведите, пожалуйста, синтаксический пример, как вы хотите N-мерный массив использовать?

В качестве идеи раз, абстрактную область памяти можно представлять в виде N-мерного массива, но нужно знать все размерности.

В качестве идеи два, можно делать массив указателей. Если нужно добавить "размерность" одному или нескольким элементам, можно этому указателю выделить память под массив указателей, ну и в том же духе. В таком случае, нужно как-то определять, когда элемент массива указывает на массив, а когда на данные.
Vorox
 Аватар для Vorox
25 / 24 / 3
Регистрация: 26.11.2010
Сообщений: 57
30.01.2011, 22:05  [ТС]     n-мерный массив #3
Цитата Сообщение от lemegeton Посмотреть сообщение
Приведите, пожалуйста, синтаксический пример, как вы хотите N-мерный массив использовать?

В качестве идеи раз, абстрактную область памяти можно представлять в виде N-мерного массива, но нужно знать все размерности.

В качестве идеи два, можно делать массив указателей. Если нужно добавить "размерность" одному или нескольким элементам, можно этому указателю выделить память под массив указателей, ну и в том же духе. В таком случае, нужно как-то определять, когда элемент массива указывает на массив, а когда на данные.
1 - ая идея не подходит т.к. суть как раз в том что мы не знаем кол-во размерностей.
Насчет 2 - ой опять же при создании массива указателей мы имеем четкую границу размера этого массива.
Насчет примера:
Есть файл с данными (числовыми) записанными по определенной схеме( файл не маленький ~ от 100 мб и выше) вот эти данные и надо записать в массив для последующего анализа. Причем в конец данного файла постоянно добавляются новые числа, поэтому зафиксировать его размер не получится.

П.С. Количество элементов массива - фиксированная величина. При выходе за пределы этой величины нужно увеличить размерность на 1. Вот только как реализовать это действие с помощью функции класса. Можно было бы создавать новый n+1 массив и переписывать все данные из предыдущего в новый, но тут остро возникнет вопрос по производительности...
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
30.01.2011, 22:16     n-мерный массив #4
Приведите КОД-пример использования N-мерного массива.

Хрустальный шар тут подсказывает, что вы, возможно, имеете в виду не размерность массива, а просто размер массива. Тогда зависит от размера единиц информации. При больших единицах информации (строки, структуры) в файле имеет смысл воспользоваться одно или двусвязными списками, если хотите выиграть такты. При небольших объемах информации (стандартные типы, небольшие структуры в несколько байт) лучше, наверно, копировать -- избыточность на хранение указателей будет существенной.
Vorox
 Аватар для Vorox
25 / 24 / 3
Регистрация: 26.11.2010
Сообщений: 57
30.01.2011, 22:24  [ТС]     n-мерный массив #5
Цитата Сообщение от lemegeton Посмотреть сообщение
Приведите КОД-пример использования N-мерного массива.

Хрустальный шар тут подсказывает, что вы, возможно, имеете в виду не размерность массива, а просто размер массива. Тогда зависит от размера единиц информации. При больших единицах информации (строки, структуры) в файле имеет смысл воспользоваться одно или двусвязными списками, если хотите выиграть такты. При небольших объемах информации (стандартные типы, небольшие структуры в несколько байт) лучше, наверно, копировать -- избыточность на хранение указателей будет существенной.
Примера кода нет.
По простому есть a[n] n- маскимальный размер типа int(char) (пока не решил что лучше использовать). Надо переделать его в a[n][n][n]...[n].
П.С. данная задача не имеет ни какого отношения к лабам, курсовикам и т.п.
Yandex
Объявления
30.01.2011, 22:24     n-мерный массив
Ответ Создать тему
Опции темы

Текущее время: 00:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru