10#include <unordered_map>
25template <
typename T>
using SPtr = std::shared_ptr<T>;
27template <
typename T>
using SetPtr = std::unique_ptr<std::set<T>>;
29template <
typename T,
typename G>
using UMap = std::unordered_map<T, SPtr<G>>;
31template <
typename T,
typename G>
32using UMapVec = std::unordered_map<T, std::vector<SPtr<G>>>;
34template <
typename T,
typename G>
using UMapPtr = std::unique_ptr<UMap<T, G>>;
36template <
typename T,
typename G>
39template <
typename T>
using VecSPtr = std::shared_ptr<std::vector<SPtr<T>>>;
std::shared_ptr< std::vector< SPtr< T > > > VecSPtr
std::unique_ptr< UMap< T, G > > UMapPtr
std::unordered_map< T, SPtr< G > > UMap
std::unique_ptr< std::set< T > > SetPtr
std::unordered_map< T, std::vector< SPtr< G > > > UMapVec
std::shared_ptr< T > SPtr
std::unique_ptr< UMapVec< T, G > > UMapVecPtr