Об'єднання (структура даних) — Вікіпедія

В інформатиці об'єднання (англ. union) є значенням або структурою даних, яке може мати кілька різних подань.

У сильно типізованих мовах тип об'єднання відповідає поняттю з теорії типів тип-сума, тобто вимагає використовувати різні конструктори для значень різних типів.

У слабко типізованих мовах, як-от C і C++, тип об'єднання реалізує каламбур типізації, тобто забезпечує інтерпретування одного й того ж значення відповідно до різних типів.

Залежно від конкретної мови та типу, значення об'єднання може використовуватися в таких операціях як присвоєння чи порівняння у відриві від інформації про конкретний тип або з вимогою її наявності.

Приклад на C[ред. | ред. код]

union Some {   int i;   double a; }; 

Це об'єднання зберігає або ціле число (змінна i), або число з рухомою комою (змінна a). У C та C++ об'єднання реалізовано як різновид структури, до нього звертаються так само, як і до структури: через символ «->» за використання вказівника, чи «.» за використання звичайної змінної. Можна ускладнити приклад, зробивши об'єднання частиною структури і тоді звертатися треба буде вже через структуру, тобто:

struct STRX {   int i;   Some v, *w; } a, *b; 

Розглянемо способи звернення до об'єднання, задані через вказівники, змінні та в змішаний спосіб:

a.v.i = 123; b->v.i = 123; a.w->i = 123; b->w->i = 123; 

Є можливість зробити об'єднання безіменним:

struct STRX {   int j;   union {     int i;     double a;   }; } a; 

При цьому звернення спрощується:

a.i = 123; a.a = 4.5; 

Див. також[ред. | ред. код]