23 / 23 / 11
Регистрация: 15.04.2012
Сообщений: 183
|
|
Union - Объединения21.09.2012, 17:49. Показов 10835. Ответов 21
Метки нет Все метки)
(
Объясните доходчиво что такое Объединения и для какой работы они нужны.
Несколько книг листал а про объединения толком ничего не сказано и нет примеров почти. Везде одно и тоже: пример с переменными разных типов и выводом их значений при объявлении каждой... Что-нибудь более реальное к жизни что ли хотелось бы увидеть. Ну как минимум это union и структуры, или классы. И если кто видел книгу в которой доходчиво рассказывается про union дайте пожалуйста название этой книги. Спасибо!
0
|
21.09.2012, 17:49 | |
Ответы с готовыми решениями:
21
Union |
![]() 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
|
~ Эврика! ~
![]() 1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|||||||||||
21.09.2012, 21:16 | |||||||||||
Окей, суть в чём: юнион позволяет хранить несколько величин (в данном случае величины типов нормальный-элемент-множества и множество-как-элемент-множества) в одном куске памяти. То есть одну и ту же переменную юнион-типа можно трактовать и как один из хранимых типов, и как другой.
Применительно к данному случаю юнион тут как собаке пятая лапа, но раз уж сказано. (Вообще стоит делать внутри несколько контейнеров "для нормальных", "для множеств", "для другой-третий-тип".) Идею вы поняли правильно (шаблонами не гружу):
0
|
~ Эврика! ~
![]() 1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||
21.09.2012, 21:45 | ||
В новом ограничение снято, но при условии, что все эти функции реализуются руками для юниона, если они нужны. (Ну и список, естессно, расширился move-конструктором/присваиванием.)
1
|
Модератор
![]() 8966 / 6732 / 921
Регистрация: 14.02.2011
Сообщений: 23,771
|
||||||||||||||||||||||||||||||||||||||||||
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
|
Модератор
![]() 8966 / 6732 / 921
Регистрация: 14.02.2011
Сообщений: 23,771
|
|||
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
|
Модератор
![]() 8966 / 6732 / 921
Регистрация: 14.02.2011
Сообщений: 23,771
|
||||||||
22.09.2012, 01:24 | ||||||||
element.s будет указатель на структуру если так element.el указатель на байты вот пришло в голову это не рабочий пример а мысли вслух распечатать дамп памяти который занимает структура(или класс)
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 с методами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
|
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
|
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
|
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
|
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
|
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
|
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
|
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C#
Задание 1:
КЛАСС FORM 1
public partial class Form1 : Form
{
Spisok listin = new Spisok();
. . .
|
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
|
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
|