powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Двумерные массивы и С++
25 сообщений из 70, страница 1 из 3
Двумерные массивы и С++
    #39286832
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
0.Пусть у нас есть двумерный массив:
Код: plaintext
1.
2.
3.
4.
int** a = (int**)malloc(sizeof(int*)*n);
	for (int i = 0; i < n; ++i){
		a[i] = (int*)malloc(sizeof(int)*m);
	}



1.Так мы найдем минимум в каждой строке:
Код: plaintext
1.
2.
3.
for (int i = 0; i < n; ++i){
		counters_min_in_rows[i] = *std::min_element(a[i], a[i] + m);
	}


2. Написать свои функции поиска минимума и максимума не составляет труда, однако мне хотелось бы использовать существующие возможности С++. Подскажите пожалуйста по следующим вопросам:

q1 Как использовать существующий функционал С++ для поиска min в столбцах матрицы? Будут ли при этом какие-то потери по времени в отличие от классической реализации? Как бы вы поступили на практике?
q2 Когда вы пишите программы на С++, используете ли вы функции выделения памяти malloc,calloc и др. ?
q3 Каким образом вы бы оформили код из пункта 1, в стиле С++ ?
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39286854
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryЗдравствуйте.
0.Пусть у нас есть двумерный массив:
Код: plaintext
1.
2.
3.
4.
int** a = (int**)malloc(sizeof(int*)*n);
	for (int i = 0; i < n; ++i){
		a[i] = (int*)malloc(sizeof(int)*m);
	}


/


начнем с того, что это - не двумерный массив, а массив массивов.


2. Написать свои функции поиска минимума и максимума не составляет труда, однако мне хотелось бы использовать существующие возможности С++. Подскажите пожалуйста по следующим вопросам:

q1 Как использовать существующий функционал С++ для поиска min в столбцах матрицы?

ну, по хитрому вычислять индексы в матрице, и в цикле на range обрабатывать. или в for each.


Будут ли при этом какие-то потери по времени в отличие от классической реализации?

ой, Там при обработке в памяти какие потоки по времени то?

Как бы вы поступили на практике?

не знаю, какую-то библиотеку на этот счет бы нашел.

q2 Когда вы пишите программы на С++, используете ли вы функции выделения памяти malloc,calloc и др. ?


нет. даже лучше new не использовать явно.

q3 Каким образом вы бы оформили код из пункта 1, в стиле С++ ?


не знаю, надо подумать.
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39286856
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
многомерный массив отличается от вложенных массивов именно тем, что доступ ко всей памяти массива происходит регулярным образом.
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39286869
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в c++ забыли/не захотели сделать полноценные многомерные массивы
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39286870
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury0.Пусть у нас есть двумерный массив:
Код: plaintext
1.
2.
3.
4.
int** a = (int**)malloc(sizeof(int*)*n);
	for (int i = 0; i < n; ++i){
		a[i] = (int*)malloc(sizeof(int)*m);
	}


Выделяй память одним большим куском
Код: plaintext
1.
2.
void p* = malloc(sizeof(int*)*n + sizeof(int)*m*n);
...
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39286885
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, я бы применял это :

http://www.boost.org/doc/libs/1_61_0/libs/multi_array/doc/user.html
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287094
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилв c++ забыли/не захотели сделать полноценные многомерные массивы
А скольки -мерность нам нужна в языке? Выше 2-й степени идёт полиномиальный расход памяти.
Возможно хештаблички решат это задачу более экономно. Разумеется я исхожу из предположения
что пользователь не всегда использует весь диапазон ключей и большая часть ячеек остаются
нулями.
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287099
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА скольки -мерность нам нужна в языке?
>1
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287108
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилmaytonА скольки -мерность нам нужна в языке?
>1
Ну назови задачу где тебе нужен был массив выше двух измерений.
И что там хранилось и как использовалось?
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287125
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилв c++ забыли/не захотели сделать полноценные многомерные массивы
Потому что кому надо может тривиально реализовать класс с таким функционалом.
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287193
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИзопропилпропущено...

>1
Ну назови задачу где тебе нужен был массив выше двух измерений.

В Fortran-90, если ничего не путаю, их 7. Мне больше 6-ти как-то не требовалось...
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287195
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
я тут не так давно карты Кохонена юзал, Там в моделях 7-10 изменений - легко..


вообще, любые матмодели ....
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287217
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, крутяк.

И как они хранились в memory?
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287268
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим у нас есть некий язык X++ в котором можно сделать следующее:

Код: plaintext
1.
2.
// 5-th dimension Cube
double hyperCube[][][][][] = new double[][][][][]();


Как его аллоцировать? В какую структуру? Как его экстендить. Как он будет
деградировать (освобождать память)?

В хешмапу? А в какую? А если мне надо будет сделать срез (итаратор по 3-му параметру)
то как взять значения которые у меня уже в кубе?
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287283
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКак его аллоцировать? В какую структуру? Как его экстендить. Как он будет
деградировать (освобождать память)?
ИМХУ в одномерный массив. Какая разница сколько измерений? Расчет смещения относительно начала прост:
например в arr[M][N][K][L] , надо получить элемент a[1][2][3][4] смещение будет
Код: plaintext
1.
((1*N + 2) * K + 3) * L + 4
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287285
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима это банально. Ты подумай сколько у тебя памяти и какие диапазоны
индексов отсюда всплывают.
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287300
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДима это банально. Ты подумай сколько у тебя памяти и какие диапазоны
индексов отсюда всплывают.
Если это обычный (не ассоциативный) массив, то элементов будет M*N*K*L и от эвристики меньше не станет. Другой вопрос как оно в память ляжет, а тут не столько память важна (докупить можно если очень надо), сколько кэш проца, поэтому самое часто перебираемое измерение должно быть последнее, т.е. L.
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287302
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, ну припустим я эти значения M,N,K.... еще не знаю. Я буду грузить
данные из внешнего файла. Из СSV.
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287312
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv q1 Как использовать существующий функционал С++ для поиска min в столбцах матрицы?

ну, по хитрому вычислять индексы в матрице, и в цикле на range обрабатывать. или в for each.


Не может кто-нибудь привести конкретный пример, пожалуйста
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287317
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИзопропилпропущено...

>1
Ну назови задачу где тебе нужен был массив выше двух измерений.
И что там хранилось и как использовалось?

У меня в программах на Maple есть 4х мерные матрицы. Для реализации приближенных методов, коэффициенты в вычислительной схеме имеют 4 индекса
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287326
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, если в качестве набора базисных функций использовать , строим невязку и уже имеем коэффициенты адресуемые 4мя индексами
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287330
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonDima T, ну припустим я эти значения M,N,K.... еще не знаю. Я буду грузить
данные из внешнего файла. Из СSV.
А какая разница M,N,K это константы или переменные? Другое дело если ты не знаешь как будут использоваться эти M,N,K.
Кстати "грузить" это уже отдельная ресурсоемкая задача.
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287355
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonКак его аллоцировать? В какую структуру? Как его экстендить. Как он будет
деградировать (освобождать память)?
ИМХУ в одномерный массив. Какая разница сколько измерений? Расчет смещения относительно начала прост:
например в arr[M][N][K][L] , надо получить элемент a[1][2][3][4] смещение будет
Код: plaintext
1.
((1*N + 2) * K + 3) * L + 4


в общем случае адрес p+(i 1 -l 1 ) * s 1 + (i 1 -l 2 ) * s 2 +...
где s n - шаг по измерению(stride)

это позволяет строить вырезки(slice) в том числе и с уменьшением числа измерений

p,l i ,s i - хратятся в паспорте(дескрипторе) массива
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287375
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что решили? 5-мерным массивам дать жизнь?
Или обойдемся проекциями на одномерный?
...
Рейтинг: 0 / 0
Двумерные массивы и С++
    #39287389
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТак что решили? 5-мерным массивам дать жизнь?
Или обойдемся проекциями на одномерный?
ИМХУ Задачу надо конкретную. Под нее структуру хранения выбирать.
...
Рейтинг: 0 / 0
25 сообщений из 70, страница 1 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Двумерные массивы и С++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]