Зачем использовать базовые классы для узлов списка / дерева в стандартной библиотеке C ++? - PullRequest
4 голосов
/ 27 мая 2020

В libstdc++ и libc++ внутренние узлы для списков (например, list и forward_list) и других деревьев построены (как минимум) из двух частей: базового класса узла; и сам класс узла. Например, вместо:

struct sl_full_node {
  sl_full_node *p;
  int value;
};

... мы увидим что-то вроде:

struct sl_node_base {
  sl_node_base *p;
};

struct sl_node : sl_node_base {
  int value;
}

Простой, самодостаточный пример этой идиомы можно найти в односвязном список предложений от 2008 года здесь . В чем преимущества такого подхода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...