Satellite data refers to any “payload” that you want to keep in your data structure and which is not part of the data structure structure. That could be all you want. It can be one value, a large set of values, or a pointer to another location that contains the value.
For example, here is the node list for a singly linked list, the satellite data of which is a single integer:
struct node { node * next; int satellite; };
In other words, the whole value of any given data structure lies in the data that it contains, which is satellite data in your book terminology. The data structure will additionally consume structural data (for example, the next pointer in the example) to execute the algorithms that define it, but this is essentially "overhead" from the user's point of view.
For associative containers, the key value has a double role: on the one hand, this is user data, but on the other hand, it is also part of the container structure. However, the tree can be equipped with additional satellite data, in which case it becomes a “map” from the key data to the satellite data.
On the one hand, you have a fixed-size array that has no overhead and only useful data, and on the other hand you have complex structures, such as multiindexes, try, Judy arrays or non-blocking containers that support a relatively large amount of structural data.
Kerrek SB
source share