|
23 / 23 / 11
Регистрация: 15.04.2012
Сообщений: 183
|
|
Union - Объединения21.09.2012, 17:49. Показов 11132. Ответов 21
Метки нет (Все метки)
Объясните доходчиво что такое Объединения и для какой работы они нужны.
Несколько книг листал а про объединения толком ничего не сказано и нет примеров почти. Везде одно и тоже: пример с переменными разных типов и выводом их значений при объявлении каждой... Что-нибудь более реальное к жизни что ли хотелось бы увидеть. Ну как минимум это union и структуры, или классы. И если кто видел книгу в которой доходчиво рассказывается про union дайте пожалуйста название этой книги. Спасибо!
0
|
|
| 21.09.2012, 17:49 | |
|
Ответы с готовыми решениями:
21
Union |
|
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
|
|
| 21.09.2012, 17:52 | |
|
Elfenlide, K&R! так как юнионы, энумы и структуры это наследие няшного Си!
0
|
|
|
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
|
|
| 21.09.2012, 17:54 | |
|
0
|
|
|
23 / 23 / 11
Регистрация: 15.04.2012
Сообщений: 183
|
||||||||||||
| 21.09.2012, 18:18 [ТС] | ||||||||||||
|
Дайте нормальную книгу или может сайт с хорошими примерами. Ссылка что дали выше ,я там был, и совсем не понимаю зачем что и почему.....как бы понятно, что можно выводить в разных типах одно значение, но неужели юнион используют только для того чтобы выполнять задачи подобные этой:
Как это сделать я не представляю себе. Препод сказал используй "Объединения Union", я посмотрел что там к чему, и ничего не понял, препод мне объяснил тоже что и на сайт указанном выше, хотя это мне понятно. Непонятно как юнион в моей ситуации может помочь. он сказал использовать можно юнион и массив структур.. дал небольшой фрагмент который от руки набросал за минуту, сказал пару умных слов и я так и ничего не понял...ну, кроме мелочей которые итак ясны.... это то что он мне написал:
0
|
||||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 21.09.2012, 18:19 | |
|
Invader_Zim, Ага, только вот union в C++11 вышел далеко за рамки данного наследия.
0
|
|
|
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
|
|
| 21.09.2012, 18:30 | |
|
ForEveR, что не использую, о том не говорю. Времени с новым стандартом разобраться ,к сожалению, нет.
0
|
|
|
23 / 23 / 11
Регистрация: 15.04.2012
Сообщений: 183
|
||
| 21.09.2012, 21:01 [ТС] | ||
|
0
|
||
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|||||||||||
| 21.09.2012, 21:16 | |||||||||||
|
Окей, суть в чём: юнион позволяет хранить несколько величин (в данном случае величины типов нормальный-элемент-множества и множество-как-элемент-множества) в одном куске памяти. То есть одну и ту же переменную юнион-типа можно трактовать и как один из хранимых типов, и как другой.
Применительно к данному случаю юнион тут как собаке пятая лапа, но раз уж сказано. (Вообще стоит делать внутри несколько контейнеров "для нормальных", "для множеств", "для другой-третий-тип".) Идею вы поняли правильно (шаблонами не гружу):
0
|
|||||||||||
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 21.09.2012, 21:21 | |
|
хотел бы уточнить у знающих:
union разве может не POD типы содержать? множество какое-то например. старый стандарт? новый стандарт?
0
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||
| 21.09.2012, 21:45 | ||
|
В новом ограничение снято, но при условии, что все эти функции реализуются руками для юниона, если они нужны. (Ну и список, естессно, расширился move-конструктором/присваиванием.)
1
|
||
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
|
||||||||||||||||||||||||||||||||||||||||||
| 21.09.2012, 21:54 | ||||||||||||||||||||||||||||||||||||||||||
|
Infinity3000,
посмотрел я на твою ссылку и пригорюнился одна эта фраза
![]() Elfenlide, попытаюсь объяснить своими словами Объединения используют когда одни и те же данные нужно выразить разным способом например(куски реальной программы для работы с контроллера с USB) хост посылает контроллеру данные упакованные вот в такую структуру
их удобно объединить
и тут приходит на помощь объединение
массив из 8 байтов структуру SETUP_PACKET и слово wRequest(используются два первых байта) и работаем
2
|
||||||||||||||||||||||||||||||||||||||||||
|
23 / 23 / 11
Регистрация: 15.04.2012
Сообщений: 183
|
||
| 22.09.2012, 00:01 [ТС] | ||
|
Ещё один вопрос: Откуда такие знания?)Дело в том что я смотрел несколько книг разных по С++, и везде один пример на ввод и вывод элементов разного типа, и просто синтаксис объявления, а толкового ничего нету.Какие книги вы посоветуете может из тех в которых можно полноценно черпать информацию?
0
|
||
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
| 22.09.2012, 00:06 | |
|
Естессно, я не помню наизусть тонкости. Интересуют тонкости — открываем стандарт (новый) и читаем. Вот оттуда я и вычитал про конкретные ограничения (так-то только смутно помню, что туда засунуть можно только классы, которые не особо круче сишных структур).
0
|
|
|
23 / 23 / 11
Регистрация: 15.04.2012
Сообщений: 183
|
|
| 22.09.2012, 00:11 [ТС] | |
|
0
|
|
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
|
|||
| 22.09.2012, 00:26 | |||
|
а если ко мне то отвечу словами Гете "Теория без практики мертва, а вечно зелено лишь древо жизни" изучай побольше исходников , задавай вопросы, ну и книги тоже читай но отбрасывай ненужное кстати я тоже долго не пользовался объединениями поскольку объяснения были как на той ссылке но увидев пару раз их применения не это а с учебниками особенно с нашими будь осторожней недавно тема проскакивала привели методичку 2012 для работы с BC 3.1( лет десять наверно тупо перепечатывали) смотри переводную литературу, а если знания позволяют читай в оригинале
0
|
|||
|
23 / 23 / 11
Регистрация: 15.04.2012
Сообщений: 183
|
|||
| 22.09.2012, 00:56 [ТС] | |||
|
К сожалению я не мог въехать в объединения как раз-таки по причине того что сколько ни искал, толком не нашёл нормального примера с union или если находил то там небыло комментариев и код слижком сложный для моего уровня. Ещё раз спасибо огромное всем за помощь! Добавлено через 21 минуту
0
|
|||
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
|
||||||||
| 22.09.2012, 01:24 | ||||||||
|
element.s будет указатель на структуру если так element.el указатель на байты вот пришло в голову это не рабочий пример а мысли вслух распечатать дамп памяти который занимает структура(или класс)
0
|
||||||||
|
23 / 23 / 11
Регистрация: 15.04.2012
Сообщений: 183
|
|
| 22.09.2012, 01:42 [ТС] | |
|
0
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||||||||
| 22.09.2012, 02:33 | ||||||||
Поэтому можно сделать два вектора: std::vector<AtomicType> и std::vector<Set>. Первый хранит все элементы-атомы, второй — множества. Меньше динамических проверок типов и чуть быстрее поиск, просто потому, что мы уверены, что если нам надо искать число, то мы его ищем среди чисел, а не среди включённых в множество подмножеств. И наоборот, если мы ищем множество, то тоже знаем, где его искать.
1
|
||||||||
|
23 / 23 / 11
Регистрация: 15.04.2012
Сообщений: 183
|
|||
| 22.09.2012, 08:41 [ТС] | |||
|
Добавлено через 1 час 30 минут 1.Синтаксическая ошибка идентификатор "SetElement" 2. Other - не объявленный идентификатор 3.бинарный "оператор ==" слишком мало аргументов 4.Set<T>::SetElement::operator == " не является статическим членом. 5.Set<T>::SetElement - зависимое имя не является типом.
0
|
|||
| 22.09.2012, 08:41 | |
|
Помогаю со студенческими работами здесь
20
Union Union Union и UB union с методами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|