|
0 / 0 / 0
Регистрация: 16.12.2019
Сообщений: 4
|
|
Копирование данных из одного многомерного массива в другой21.01.2020, 20:04. Показов 12521. Ответов 24
Возможно ли скопировать данные с одного двухмерного массива в другой и если можно, то как это сделать?
0
|
|
| 21.01.2020, 20:04 | |
|
Ответы с готовыми решениями:
24
|
|
0 / 0 / 0
Регистрация: 16.12.2019
Сообщений: 4
|
|
| 21.01.2020, 21:44 [ТС] | |
|
а как он реализуется для 2х мерных массивов? ибо я находил только реализацию для одномерного
Добавлено через 2 минуты а как он реализуется для 2х мерных массивов? ибо я находил только реализацию для одномерного
0
|
|
|
260 / 165 / 54
Регистрация: 03.05.2019
Сообщений: 339
|
|
| 21.01.2020, 23:05 | |
|
Можно вручную, через два цикла, но это не очень оптимально.
0
|
|
|
Модератор
|
|||||||
| 22.01.2020, 00:43 | |||||||
|
Свойств Length и там, и там. По его длине и копируйте. Главное чтобы размерности совпадали.
0
|
|||||||
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
|
| 22.01.2020, 08:47 | |
|
amator_C, это самый оптимальный способ
0
|
|
|
28 / 13 / 8
Регистрация: 19.11.2015
Сообщений: 129
|
|
| 22.01.2020, 09:18 | |
|
Рядовой, не самый))
в одном случае это копирование скопом и целиком за одну операцию, а в другой циклом, который априори НЕ оптимальней, НО зато более гибкий и универсальный - с этим соглашусь.
0
|
|
|
628 / 392 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
|
||
| 22.01.2020, 10:55 | ||
|
NikolaSN,
0
|
||
|
28 / 13 / 8
Регистрация: 19.11.2015
Сообщений: 129
|
|
| 22.01.2020, 14:11 | |
|
Рядовой, Pilarentes, Вы правы)
Сделал замеры и был удивлён. на массиве [25000,25000] Array.Copy() работает аж в 20 раз медленнее чем через двойной цикл "for i for j" Массивы больше размерности выдавали OutOfMemoryException даже на х64, что логично ))
0
|
|
|
260 / 165 / 54
Регистрация: 03.05.2019
Сообщений: 339
|
|
| 22.01.2020, 14:34 | |
|
Все же копирование циклами не очень оптимально, но реализация метода Copy() вряд ли будет очень уж низкоуровневой, всё таки C#. С другой стороны, если Copy() более медленный, что меня удивило, то у нас и остаются только циклы.
0
|
|
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
||
| 22.01.2020, 16:09 | ||
|
1
|
||
|
260 / 165 / 54
Регистрация: 03.05.2019
Сообщений: 339
|
|
| 22.01.2020, 16:12 | |
|
Ну, подождите, эти данные занимают какое-то место в памяти, если бы эту память как-то привязать к новому массиву, это и было бы низкоуровневое решение.
0
|
|
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
|
| 22.01.2020, 16:19 | |
|
amator_C, можно. И это есть, если просто присвоить новому массиву ссылку на старый. Но данные останутся старые в единственном экземпляре. Просто доступ к ним будет из 2-х мест.
А копирование подразумевает создание новой структуры, которую невозможно сделать не проходя по всем данным
0
|
|
|
260 / 165 / 54
Регистрация: 03.05.2019
Сообщений: 339
|
|
| 22.01.2020, 16:29 | |
|
Может и так, я тоже про это подумал. Интересно, может есть какой-то механизм копирования области памяти целиком...
0
|
|
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
||||||||
| 22.01.2020, 16:46 | ||||||||
|
у меня результат такой, фор рядом не стоял, это 2500х2500, 3х4 примерно та же картина
2
|
||||||||
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
|||
| 22.01.2020, 16:47 | |||
|
Странные результаты теста. Скорее всего, где-то ошибка или сработала преждевременная оптимизация. Добавлено через 30 секунд
1
|
|||
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|||||||
| 22.01.2020, 16:48 | |||||||
1
|
|||||||
|
28 / 13 / 8
Регистрация: 19.11.2015
Сообщений: 129
|
|
| 22.01.2020, 16:57 | |
|
да простой код-то.
1. Создал 2 массива 25к на 25к 2. Сделал Copy(), рассчитав разницу по времени ДО выполнения и ПОСЛЕ выполнения 3. Сделал FOR FOR, рассчитав разницу по времени ДО выполнения и ПОСЛЕ выполнения Тайминг был у Copy() порядка 42-46 секунд из 10 замеров Тайминг был у for for около 2,1-2,2 секунды также где-то с десяток замеров. По-этому я и удивлён был почему так, а не иначе.
0
|
|
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
||
| 22.01.2020, 17:16 | ||
|
Но судя по разнице таймингов, у вас там вообще не то замеряется, может таймером пару лишних строк зацепили
0
|
||
|
28 / 13 / 8
Регистрация: 19.11.2015
Сообщений: 129
|
||||||
| 22.01.2020, 17:24 | ||||||
|
КОП, нарыл код))
проблематично было найти в мусорке, долго)
0
|
||||||
| 22.01.2020, 17:24 | |
|
Помогаю со студенческими работами здесь
20
Копирование одного массива в другой Копирование одного массива в другой Копирование данных с одного листа на другой Копирование данных из одного файла в другой Копирование данных с одного листа на другой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|