Простая структура данных

Простая структура данных

Простая структура данных (англ. plain old data, POD) — в современных языках программирования высокого уровня тип данных, имеющий жёстко определённое расположение полей в памяти, не требующий ограничения доступа и автоматического управления. Переменные такого типа можно копировать простыми процедурами копирования участков памяти наподобие memcpy. Противоположность — управляемая структура данных.

Проще всего простую структуру данных определить от противного. Если компилятор скрытно от пользователя переставил поля местами, или при появлении переменной нужно вызвать конструктор, или при исчезновении нужно вызвать деструктор, или при копировании — особую процедуру копирования, это управляемая (то есть не простая) структура.

В стандартном Паскале и Си все типы данных являются простыми.

Содержание

Преимущества простых структур данных

Простые структуры данных имеют две особенности.

Предсказуемое устройство в памяти

POD’ы устроены в памяти в точности так, как описал программист (возможно, с некоторым выравниванием). Поэтому POD’ы широко применяются для связи между двумя библиотеками времени выполнения. В частности — для передачи данных из программы в программу, из плагина в плагин, для связи с кодом, написанным на другом языке программирования.

Отсутствие управляющего кода

Это значит, что при появлении объекта не нужно вызывать конструктор, при копировании — операцию присваивания, а при уничтожении — деструктор. Это, в свою очередь, даёт такие преимущества.

  1. Статическая инициализация. Вместо того, чтобы при запуске программы скрытно от программиста вызывать конструктор, POD’ы можно собрать ещё при компиляции программы.
  2. Опять-таки, это важно для связи между программами: ведь менеджер памяти не должен заниматься управлением в той памяти, которая ему не принадлежит.
  3. Только простые типы могут находиться в union (в Паскале соответственно record/case).
  4. Функции с побочным эффектом наподобие GetLastError плохо совместимы с автоматически управляемыми типами.

В C++

В C++ POD определяется от противного. Тип данных является POD’ом, если:

По стандарту C++ простой тип данных устроен в точности так, как описано. Управляемую же структуру компилятор может реорганизовать так, как он сочтёт наиболее эффективным.

В C++11

Концепция POD’ов в C++11 разделена на две.

Тип данных является тривиальным, если:

  • у него нет конструктора, деструктора, виртуальных методов и копирующей операции присваивания (то есть operator=, принимающего на входе тот же тип).
  • все его нестатические поля тривиальны.

Такие типы могут инициализироваться статически, копироваться через memcpy.

Тип данных является типом со стандартным устройством, если:

  • все нестатические поля имеют одинаковые права доступа (все private, все protected или все public) и определены в одном классе.
  • нет виртуальных методов, виртуального наследования.
  • первое определённое поле не совпадает по типу ни с одним из родительских классов.

У таких типов предсказуемое устройство в памяти, их можно передавать в другую библиотеку времени выполнения.

Тогда POD — это тривиальный тип по стандартным устройством, все нестатические поля которого — POD’ы.

В Embarcadero Delphi

Простыми структурами данных считаются все типы, кроме:

  • новых строк неограниченной длины (AnsiString, WideString, UnicodeString);
  • интерфейсов COM;
  • динамических массивов;
  • типов, которые содержат один из этих трёх;
  • новых объектов типа class. Впрочем, TObject, TButton и т. д. — это указатели на объект и всегда являются простыми типами!



Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Простая структура данных" в других словарях:

  • простая структура ЗБИ ЕСФОБД — 4.31 простая структура ЗБИ ЕСФОБД (simple CBEFF BIR structure): Структура ЗБИ ЕСФОБД, содержащая один СБЗ и один ББД (6.2). Источник …   Словарь-справочник терминов нормативно-технической документации

  • ГОСТ Р ИСО/МЭК 19785-1-2008: Автоматическая идентификация. Идентификация биометрическая. Единая структура форматов обмена биометрическими данными. Часть 1. Спецификация элементов данных — Терминология ГОСТ Р ИСО/МЭК 19785 1 2008: Автоматическая идентификация. Идентификация биометрическая. Единая структура форматов обмена биометрическими данными. Часть 1. Спецификация элементов данных оригинал документа: 4.4. биометрический… …   Словарь-справочник терминов нормативно-технической документации

  • МАГНИТНАЯ СТРУКТУРА АТОМНАЯ — периодич. пространств. расположение магнитоактивных ионов и упорядоченная ориентация их магнитных моментов в кристалле (ферро , ферри или антиферромагнетике). М. с. а. следует отличать от доменной, определяемой характером и взаимным расположением …   Физическая энциклопедия

  • Магнитная структура —         атомная, периодическое пространственное расположение и ориентация атомных магнитных моментов в магнитоупорядоченном кристалле (ферро , ферри или антиферромагнетике). Атомную М. с. следует отличать от доменной магнитной структуры,… …   Большая советская энциклопедия

  • D (язык программирования) — У этого термина существуют и другие значения, см. D. D Семантика: мультипарадигменный: императивное, объектно ориентированное, обобщённое программирование Тип исполнения: компилятор Появился в: 1999 Автор(ы) …   Википедия

  • Факторный анализ — Факторный анализ  многомерный метод, применяемый для изучения взаимосвязей между значениями переменных. Предполагается, что известные переменные зависят от меньшего количества неизвестных переменных и случайной ошибки. Содержание 1 Краткая… …   Википедия

  • запись — 3.20 запись: Строка байтов, которая может обрабатываться картой как единое целое и на которую можно дать ссылку посредством номера или идентификатора записи. Источник …   Словарь-справочник терминов нормативно-технической документации

  • Дерево квадрантов — Разбитая с помощью дерева квадрантов плоскость Дерево квадрантов (также квадродерево, 4 дерево, англ. quadtree) дере …   Википедия

  • B-дерево — Тип Дерево Изобретено в 1972 году Изобретено Rudolf Bayer, Edward M. McCreight Временная сложность в О символике В среднем В худшем случае Расход памяти O(n) O(n) Поиск O(log n) O(log n) Вставка O(log n) O(log n) Удаление O(log n) O(log n) …   Википедия

  • Электронные деньги — (Electronic money) Электронные деньги это денежные обязательства эмитента в электронном виде Все, что нужно знать об электронных деньгах история и развитие электронных денег, перевод, обмен и вывод электронных денег в различных платежных системах …   Энциклопедия инвестора


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»