Virtual functions under pressure
- du1container.hpp + du1container.cpp
- Kontejner schopný skladovat objekty několika typů
- Typy nemusejí mít společného předka
- Typy je nutno vyjmenovat jako parametry šablony kontejneru
- Nové objekty přidávány na konec
- Přidávání kopíruje objekt
- Umožňuje sekvenční průchod všemi objekty
- V pořadí vytvořeném přidáváním
- V pořadí, které vyhovuje kontejneru
- Objekty se zpřístupňují odkazem
- Uživatel zadává polymorfní funktor akceptující odkaz na kterýkoliv z použitých typů objektů
void test()
{
using container = polymorphic_container< use_sse, T1, T2>
container c;
c.push_back( T1( /*...*/));
c.push_back( T2( /*...*/));
c.push_back( T1( /*...*/));
c.unordered_for_each( [](auto && e){ /*...*/});
c.ordered_for_each( [](auto && e){ /*...*/});
}
Optimalizuje se rychlost průchodu
- Na rychlosti vkládání nezáleží
Měřeno jednotným testovacím prostředím