If the object are so big, I'd create these objects in the heap (with new operator) and store the pointers in the map. I'd make a class that will manage this store and will have a member of this map. This class may have a Clear() method that will delete all MyLargeObj's. This Clear should be called from the class destructor. This way will allow to hide the implementation of the MyLargeObj even, if it is needed.