#pragma once #include "Set.h" // template // using TPair = TTuple; template class TPair { public: KeyType First; ValueType Second; FORCEINLINE KeyType& Key() { return First; } FORCEINLINE const KeyType& Key() const { return First; } FORCEINLINE ValueType& Value() { return Second; } FORCEINLINE const ValueType& Value() const { return Second; } }; template //, typename SetAllocator, typename KeyFuncs> class TMapBase { public: typedef TPair ElementType; typedef TSet ElementSetType; ElementSetType Pairs; FORCEINLINE ValueType& Find(const KeyType& Key) { for (int j = 0; j < this->Pairs.Elements.Num(); j++) { ElementType& Pair = this->Pairs.Elements.operator[](j).ElementData.Value; if (Key == Pair.Key()) return Pair.Value(); } } }; template //, typename SetAllocator, typename KeyFuncs> class TSortableMapBase : public TMapBase //, SetAllocator, KeyFuncs> { }; template //,typename SetAllocator /*= FDefaultSetAllocator*/, typename KeyFuncs /*= TDefaultMapHashableKeyFuncs*/> class TMap : public TSortableMapBase //, SetAllocator, KeyFuncs> { };