Краткое объяснение базовой структуры дано здесь , цитируемое ниже:
Реализация основана на узлах, связанных с указателями, как, скажем, ваша любимая std::set
реализация. Я немного подробнее остановлюсь на этом: std::set
обычно реализуется как rb-дерево, где узлы выглядят как
struct node
{
// header
color c;
pointer parent,left,right;
// payload
value_type value;
};
Ну, а узел multi_index_container
по сути является "многоузловым" с таким же количеством заголовков, как индексы и полезная нагрузка. Например, multi_index_container
с двумя так называемыми упорядоченными индексами использует внутренний узел, который выглядит как
struct node
{
// header index #0
color c0;
pointer parent0,left0,right0;
// header index #1
color c1;
pointer parent1,left1,right2;
// payload
value_type value;
};
(В реальности все сложнее, эти узлы генерируются с помощью некоторого метапрограммирования и т. Д., Но вы понимаете) [...]