Можно ли создать массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться int и т.д.?10.08.2019, 23:35. Показов 9611. Ответов 119
Метки структурные массивы (Все метки)
Такой вопрос: я хочу создать одномерный массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться bool, с 10 по 14 будет храниться int. Я видел пример со структурами как раз на этом форуме, но я потерял ссылку на сайт? Можно ли создать такой массив и какими способами?
0
|
|
| 10.08.2019, 23:35 | |
|
Ответы с готовыми решениями:
119
Создать базу из трех сотрудников, где будут храниться их имена Можно ли в com-сервере создать массив в котором будут храниться данные какое-то время Создать массив, содержащий массивы, которые, в свою очередь, содержат массивы, в которых уже будут храниться различные типы данных |
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
|
|||||
| 12.08.2019, 00:32 | |||||
|
массив однородный и состоит он или из union, variant, или там структур это другие типы данных, совсем другие. это не double не int и ни что то другое
1
|
|||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 12.08.2019, 01:19 | |||||||
|
массив - лишь формально коллекция однотипных элементов. по факту туда запихать можно все что угодно. лишь бы места хватило. неужели это так сложно понять? особенно, когда перед глазами рабочие примеры-иллюстрации? насчет union - конечно это не int. ну и что? тебе какая печаль то? тебе надо покласть в массив объекты разных типов. ты берёшь и кладешь. для того union и существует. а не несешь всякую чушь: "так нельзя" человек поклал в массив объекты разных типов. человеку надо извлечь из массива объекты разных типов. человек извлек объекты разных типов. union или variant - это способы как достичь желаемого. просто способы, как можно организовать такой волшебный масссив. неужели это так сложно понять? Добавлено через 2 минуты он ваял конкретно:
0
|
|||||||
|
"C with Classes"
|
|
| 12.08.2019, 07:16 | |
|
hoggy, короче, меня слушай, Можно ли создать массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться int и т.д.?, ты че там про массив несешь?
2
|
|
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
|
||||
| 12.08.2019, 07:39 | ||||
sizeof(arr[0])==sizeof(arr[5]) да или нет?а sizeof(arr[0])==sizeof(double) да или нет?а sizeof(arr[0])==sizeof(int) да или нет?а sizeof(arr[0])==sizeof(bool) да или нет?только это будет массив строк, а не массив double создать массив из разношерстных элементов нельзя а обернуть эти элементы какой то контейнер и создать массив из этих контейнеров можно но кто-нибудь объяснит зачем?
1
|
||||
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
|||||||
| 12.08.2019, 10:07 | |||||||
|
В памяти значения хранятся в двоичном представлении, а тип указывает как интерпретировать тот или иной набор 1 и 0. Я попробовал, написал код. Программа выделяет блок памяти и помещает в него разнотипные значения. Затем их можно прочитать, зная по сколько блоков памяти брать и каким типом это воспринять. Дело в том, что у меня мало опыта работы с указателями, я расповадился STL-ом. Код, который я набрал работает не корректно. Кто желает - отредактируйте и выложите его или напишите свой на идею обезличенного обращения к памяти. Мне интересно увидеть рабочий код. Кликните здесь для просмотра всего текста
На скрине приведёно успешное выполнение программы. Она то крашится, то норм. выполняется. Я говорю, что в указателях не столь хорошо разбираюсь на текущий момент.
0
|
|||||||
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
||
| 12.08.2019, 10:17 | ||
я не думаю что кому-то когда-то может понадобиться то, что вы пытаетесь реализовать.Идея и потребность в сохранении разных примитивных типов в одном контейнере вполне прозрачна и объяснима, но то что пытаетесь сделать вы - грязные трюки для каких-нибудь соревнований по мастерству владения Си/С++, которые нельзя нигде применять.
0
|
||
|
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,407
|
||||||||||||||||
| 12.08.2019, 10:47 | ||||||||||||||||
|
WxMaper, это для эксперимента. Таким конечно не надо пользоваться.
Я нашёл ошибку в своём коде: при инкрементации указателя смещение происходит на автоматически рассчитанное приращение, исходя из типа. То есть надо писать не так
Теперь всё работает успешно. Кликните здесь для просмотра всего текста
0
|
||||||||||||||||
|
Комп_Оратор)
|
||
| 12.08.2019, 13:39 | ||
|
Дело даже не в том, что итерация по такому бульдогу-с-носорогом, это грязный мазохизм. Тут всегда найдутся пару любителей такого рода занятий. Дело именно в том, что это не будет массив указанный в условии. Вы формулируете сломанную абстракцию вроде: солёного сахара, высоко-выпуклой ямы, ослепительно белой черноты... Типичные игры ума не тренированного предметным мышлением (имхо).
0
|
||
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
||
| 12.08.2019, 13:45 | ||
|
Для решения каждой задачи требуется конкретный подход. И я уже привёл достаточно весомый аргумент, когда решение такой задачи конкретно таким образом действительно рационально и реализовать по другому просто либо НЕ ВОЗМОЖНО, либо НЕ ЦЕЛЕСООБРАЗНО. Вот когда вы напишете свой алгоритм парсинга для JSON-объекта на С++ без использования контейнеров типа variant, тогда и поговорим какого ума это игры. А до тех пор вы только бла-бла-блакаете о том, чего совершенно не понимаете.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||||||
| 12.08.2019, 13:51 | ||||||||||||||||
|
формально, массив чар хранит чары. а по факту - объекты любого типа, например. и когда я пишу: "для подобных", то имею ввиду: с целью обеспечить вариативность типа без привлечения динамической памяти.
charа по факту - storage для объектов любых типов, чей sizeof(T) <= variant::max_sizeи это - прекрасное решение. вот только ты почему то думаешь: union разношерстные по определению термина unionа значит массив из элементов union - так же разношерстный по определению термина unionstd::variant.почитай область применения для std::any.хотя лучше начни с области применения union.а так, если вкратце: например, к библиотечному виджету нужно прицепить какие то данные бизнес-логики. в большинстве случаев для этого предоставляется void* user_data,со всеми вытекающими последствиями. а можно было бы использовать удобный и безопасный std::anyесли захочешь сделать цивилизованный класс json, тогда познаешь всю прелесть std::variant.Кликните здесь для просмотра всего текста
json - это дерево, элементами которого могут быть:
bool/int/double/string а так же vector из всех выше перечисленных элементов. и map <строка, все-выше-перечисленные-типы-включая-вектор> итого:
и мы получаем дерево, которое легко и непринужденно сможет создавать/хранить иерархичные структуры любой сложности, ака variant в языке питон: json obj; obj["hello"][0] = true; obj["world"][0] = 333; obj["ValeryS"] = "не тупи"; std::cout << obj << '\n';
0
|
||||||||||||||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
|
||||||||||
| 12.08.2019, 14:12 | ||||||||||
|
объект займет максимум если
0
|
||||||||||
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
|||
| 12.08.2019, 14:56 | |||
|
Чтобы немного вас приземлить, сделаем выборку: отправляем запрос в гугл "json c++" и собираем популярные библиотеки. 1. Библиотека JSON for Modern C++. https://github.com/nlohmann/js... n.hpp#L871 Что тут у нас? Объединение union json_value. Не очень-то похоже на «бульдога-с-носорогом», но по вашей логике автору кажется, что ему надо было создавать такое объединение, да?2. Библиотека RapidJSON. https://github.com/Tencent/rap... nt.h#L2017 Да что же такое! Повсюду Как же эти ребята заблуждаются... От себя добавлю класс QJsonValue из библиотеки Qt, в выдаче его не было. https://code.woboq.org/qt5/qtb... h.html#165 Ой, что это? Снова объединение. Досада какая, надо товарищам из Digia сообщить, что им кажется, что они делают всё правильно. На самом деле у них получился «бульдог-с-носорогом». json - это самое первое и очевидное, что приходит в голову. Ещё могут быть xlsx-таблицы. И как так люди умудряются в одну колонку засовывать и текст, и числа... что за грязный мазохизм? XML во всех его видах, когда параметр тега - всегда строка, но данные в нем могут быть любого зарегистрированного типа. Данные из любой BD прилетают в буфер, буфер у нас что? Обратимся к моему любимому Qt: QSqlQuery::value. Снова треклятый variant. А если я хочу отправить что-то в БД? Ну конечно можно 10 раз объявить bindValue для разных типов, чем просто задействовать вариативный тип, который так или иначе будет преобразован в строку QSqlQuery::bindValue.
0
|
|||
|
Комп_Оратор)
|
|||||
| 12.08.2019, 15:08 | |||||
|
Вдобавок скажу еще о массивах. Кроме массива как массива однотипных данных по способу хранения (арифметика адресов) существует контракт - массив. Сущность поддерживающая оператор индексации. В обоих случаях массив происходит от слова масса. Дело не в весе или сплошности монолита хранения. Дело в фундаментальном свойстве алгоритма, называемом массовостью. Именно массивы позволяют реализовать массовые проходы по группам объектов с применением алгоритмов. Их называют итерациями. И структуры, в частности, предназначены для борьбы со сложностью сопряженных массивов. Массив структур легче обрабатывать, начиная от инициализации и до самого освобождения. Таким образом те кто создают массивы бульдого-носорогов это люди не умеющие пользоваться ни статическим ни динамическим полиморфизмом. В результате когда вы будете итерировать, итерирующему блоку нужно будет знать, где заканчиваются целые, начинаются и заканчиваются дабл и т.п. Я не могу ни чего сделать, чтобы улучшить ситуацию и когда пользуюсь подобными миазмами, успокаиваю себя тем, что писать собственную библиотеку никто не даст. Но и не более. Добавлено через 6 минут
0
|
|||||
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
|||
| 12.08.2019, 15:09 | |||
|
Не нравится то, как устроен объектно-ориентированный C++? Пишите на процедурном Cи или чем вы там грезите. А притягивать за уши парадигму непонятно чего в раздел С++ не следует, а то вы выглядите тут дураком. При чем сами это понимаете:
0
|
|||
|
Комп_Оратор)
|
||||
| 12.08.2019, 15:14 | ||||
|
0
|
||||
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
|||||||
| 12.08.2019, 15:36 | |||||||
|
Если бы к вам в дом пришли инаковерующие и начали впаривать свою религию, как бы вы к этому отнеслись? Угостили бы их чаем и выслушали? Сомневаюсь. Если бы сносить стены вместо строителей к вам в дом пришли археологи с кисточками, вы бы впустили их? Я еще раз выделю для вас жирным это заветное слово: ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ С++. И когда разработчики создают объекты для решения своих задач - это не Я выбрал для себя программирование на С++ по ряду причин. И тут приходите вы (а вы, собственно, кто?) и говорите, что так как программируют на С++ - это не правильно. Притягиваете сюда какое-то предметное мышление. С++ по своему определению НЕ ЯВЛЯЕТСЯ предметно-ориентированным инструментом. Надеюсь вы осознаете, что выслушивать философствования вида Только удостоверьтесь, что ваше мнение не противоречит хотя бы базовым принципам работы с инструментом. А то так и будете про предметность рассказывать в разделе С++.
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||
| 12.08.2019, 15:39 | |||||
|
вот к чему ты это написал? я тебе уже не в первый раз такой вопрос задаю. такое впечатление, что ты как бот рандомно генерируешь ответы. и? смысл вообще у твоего вопроса какой? вкратце я итак расписал. если что-то не понятно - задавай конкретные вопросы. никто здесь не будет тебе расжёвывать азы языка.
0
|
|||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
|
||||
| 12.08.2019, 16:45 | ||||
|
0
|
||||
|
Неэпический
|
|
| 12.08.2019, 18:11 | |
|
1
|
|
| 12.08.2019, 18:11 | |
|
Помогаю со студенческими работами здесь
60
Получить массив, где будут храниться индексы строк матрицы, в которых есть равные элементы Создать класс, в котором информация будет храниться в хеше. Комментарии. Создать модуль, в котором будет храниться процедура создания картинки
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|