Моя проблема в том, что я не понимаю, когда кому-то это понадобится
Они измерили производительность своей программы и обнаружили, что замедление использования std::vector<Window *>
выше этого недопустимо Данный пример показывает «как», это не пример «когда».
И я не понимаю, какая часть в данном примере показывает это поведение и почему вы не можете сделать это со стандартными контейнерами.
Вы не можете иметь std::vector<Window>
(ни std::list<Window>
et c), потому что Window
является абстрактным типом. Контейнеры std::
владеют содержащимися в них Window
объектами, выделив для них место.
Инвазивный список работает, потому что база boost::intrusive::list_base_hook
содержит указатели prev / next, а объекты содержат хук. Это означает, что Window
объекты могут жить где угодно, например, в main
как пример с MainWindow window
и его членом Windows
.