Передать массив по значению13.08.2026, 11:21. Показов 3294. Ответов 34
Метки нет (Все метки)
Добрый день
По ходу дела задал мелкий вопрос Спасибо
0
|
||
| 13.08.2026, 11:21 | |
|
Ответы с готовыми решениями:
34
передать массив в функцию по значению
Не могу разобраться как передать корректно передать массив из функции в функцию |
| 17.08.2026, 00:03 [ТС] | ||||||||||||
0
|
||||||||||||
|
638 / 396 / 68
Регистрация: 09.03.2016
Сообщений: 4,370
|
|
| 17.08.2026, 03:21 | |
|
0
|
|
|
638 / 396 / 68
Регистрация: 09.03.2016
Сообщений: 4,370
|
|
| 17.08.2026, 12:20 | |
|
Основное - когда пишешь, правильно понимать что ты делаешь
и что там будет происходить по запуску приложения.
0
|
|
| 23.08.2026, 19:43 [ТС] | |||||||||||||||||
|
Напр такой сюжет. Увидел рекомендацию типа
0
|
|||||||||||||||||
|
фрилансер
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
|
|||
| 23.08.2026, 19:51 | |||
int интерпретируется как объект типа std::array<int, 4>Передаются итераторы и всё
0
|
|||
| 23.08.2026, 21:58 [ТС] | |||
|
0
|
|||
|
фрилансер
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
|
|||
| 23.08.2026, 23:07 | |||
|
Ну а когда нужно скопировать контейнер, нужно его просто скопировать
0
|
|||
|
Вездепух
13233 / 6865 / 1827
Регистрация: 18.10.2014
Сообщений: 17,398
|
||
| 24.08.2026, 05:50 | ||
|
Стандарт языка вводит такое свойство, как pointer-interconvertible. В частности, если класс имеет standard layout, то указатель на объект такого класса и указатель на его первый нестатический подобъект являются pointer-interconvertible. Далее, преобразование между такими указателями определены для двойного static_cast, то есть static_cast через посредство void *. При этом reinterpret_cast для указателей на объектные типы определяется именно как такой двойной static_cast.Стандарт не описывает внутреннее устройство std::array буквально, но вроде гарантирует, что этот тип должен вести себя как standard layout класс с обычным сишным массивом внутри. В таком случае, если я ничего не упускаю, такое преобразование и доступ являются вполне легальными и не вызывают неопределенного поведения.
0
|
||
|
фрилансер
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
|
||||||
| 24.08.2026, 08:34 | ||||||
|
TheCalligrapher, ну, не знаю, я бы не стал такую бомбу в код закладывать,
ведь можно обойтись без таких кастов. И кто гарантирует, что Igor3D не станет с другими классами такое делать ![]() Igor3D, Ну, например, вот функция принимает массив по ссылке и возвращает его копию, завёрнутую - да во что больше нравится. Например, тот же std::array
Например, поле N было бы неинициализировано.Тогда будет ли проблема в std::copy ?И была бы такая же проблема, если ли бы массив можно было просто копировать оператором =
0
|
||||||
|
Вездепух
13233 / 6865 / 1827
Регистрация: 18.10.2014
Сообщений: 17,398
|
||||||||||||
| 24.08.2026, 10:16 | ||||||||||||
std::array в функцию foo по значению и при этом, желательно, избежать лишних копий/лишних копирований. Ваш вариант с copy_array будет (?) создавать лишнюю копию исходных данных, то есть будет создавать возвращаемое значение функции copy_array, которое затем будет еще раз (!) копироваться в параметр вызываемой функции foo.Без лишнего копирования вызвать такую функцию можно так
1
|
||||||||||||
| 24.08.2026, 18:25 [ТС] | |||||||||||
Не по теме:
Понятно. А эту пару никогда не любил, и, по моим наблюдениям, не я один. И таких гордых задач "супергибкости" не ставилось, предполагается что массив состоит из элементов размера sizeof следующих подрядСтандарт (в конце-концов) признал что "тривиально копируемые" объекты могут быть созданы из "дампа памяти", это корректное действие (хотя всю жизнь так делали). А тогда и приведение выше корректно, ведь там просто назначается адрес для данных что бьются по формату. Да, выглядит коряво/ужасно, понятно что лучше так не делать. Ну так предложите что-то другое, содержательное вместо наивного копирования
0
|
|||||||||||
|
фрилансер
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
|
||
| 24.08.2026, 18:33 | ||
|
Итераторы - это, как раз, чтобы вообще не копировать контейнер. А тут, я так понял, сильно хочется именно скопировать
0
|
||
| 24.08.2026, 19:08 [ТС] | ||||||||
|
Конечно всегда есть простой и хороший вариант: передавать адрес первого эл-та (возможно const) + число эл-тов, т.е.
0
|
||||||||
|
фрилансер
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
|
||
| 24.08.2026, 19:25 | ||
![]() а вот стиль общения отталкивает хоть что-нибудь обсуждать ![]() Что тогда удивляться ?
0
|
||
|
Вездепух
13233 / 6865 / 1827
Регистрация: 18.10.2014
Сообщений: 17,398
|
||
| 24.08.2026, 19:47 | ||
|
... хотя стандарт языка не запрещает существования такой промежуточной копии, он также и не требует ее существования. Компиляторы в состоянии ее устранить. Такое лишнее копирование - скорее всего побочный эффект требований какого-нибудь ABI. Очень странно видеть, что ни один из компиляторов не осмеливается в такой ситуации устранить промежуточную копию. --- Да, точно: достаточно объявить функцию-получатель foo статической, то есть вывести ее из-под требований ABI, как лишняя копия исчезает.
0
|
||
| 24.08.2026, 19:47 | |
|
Как передать значение параметра функции одного экзешника значению параметра функции другому екзешнику? Как передать массив в массив с указателем Массив: передать динамический массив в функцию и записать в каждый элемент строку из файла
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|