deque is een page-based structuur. Als je heel veel geheugen alloceert is dat beter; vector moet anders een onafgebroken blok alloceren. Nou is dat toegegeven met 1.2M nog niet zo belangrijk; bij 1.2G is het een heel ander verhaal (dat lukt niet met vector in Windows)
Evengoed is het in deze handiger om de objecten direct in de container op te slaan. De standaard operator new kost waarschijnlijk >=16 bytes per allocatie, plus 4 bytes voor de pointers - met bijbehorend verlies van "locality of reference". Direct in de container is dan handiger.
Nou moet er meteen bij worden gezet dat je moet gaan prutsen

om objecten van drie verschillende types in een container te zetten, dwz je moet waarschijnlijk het soort trucen gaan uithalen dat boost::any doet. (wrapper, char[] storage, placement new).
Zonder dat is een pool allocator inderdaad de betere oplossing, al was het alleen maar omdat je dan maar 4 bytes overhead hebt per 100000 objecten, ipv 4 bytes per object.
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein