// FTTHashTable - [2020-04-13 11:57:47]
#ifndef _FTTHASHTABLE_H_
#define _FTTHASHTABLE_H_

#include "FTTVector.h"
#include "FTTPair.h"
#include "FTTALG.h"

/*
00323754
fun_list_323754:
  FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Iterator::operator++(void)
  FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Iterator::operator!=(FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Iterator const&)
  FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Iterator::operator*(void)
  FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Iterator::operator->(void)


001A20FA FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::FTTHashTable(uint)
001A235C FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::~FTTHashTable()

001A20FA
FTTHashTable<FTTPair<ushort,ushort>,
            ushort,
            PairHash,
            FTTEqual,
            FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::FTTHashTable(uint)


001A216C FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Find(FTTPair<ushort,ushort>)
001A2208 FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::End()
001A2250 FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Insert(FTTPair<ushort,ushort>,ushort)

001A898C FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Iterator::operator++()
001A8A0C FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Iterator::operator!=(FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Iterator const&)
001A8A24 FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Iterator::operator*()
001A8A28 FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Iterator::operator->()

FTTHashTable_ushort

FTTPair<ushort,ushort>,
ushort,
PairHash,
FTTEqual,
FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>


T1
T2
FTTVector<FTTPair<T1,T2>>

FTTHashTable_ushort_Iterator


FTTHashTable_ushort

CFTTBMMMatrixCache::Key,
CFTTBMMMatrixCache::StartCount,
CFTTBMMMatrixCache::KeyHash,
FTTEqual,
FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>

FTTHashTable<CFTTBMMMatrixCache::Key,
             CFTTBMMMatrixCache::StartCount,
             CFTTBMMMatrixCache::KeyHash,
             FTTEqual,
             FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>
             >::FTTHashTable(uint)

002102EC FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::FTTHashTable(uint)
002103C0 FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::~FTTHashTable()
0021051C FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::Find(CFTTBMMMatrixCache::Key)
002105F4 FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::End(void)
00210640 FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::Insert(CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount)
00210C34 FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::Clear(bool)
002A78F4 FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::~FTTHashTable()

00210344 FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::operator=(FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>> const&)
002105DC FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::Iterator::operator!=(FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::Iterator const&)
0021063C FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::Iterator::operator->(void)
00210914 FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::Iterator::operator++(void)
00210994 FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::Iterator::operator*(void)


FTTHashTable(uint)
~FTTHashTable()
operator=(FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>> const&)

Find(CFTTBMMMatrixCache::Key)
End()

Insert(CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount)
Clear(bool)
Iterator::operator!=(FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::Iterator const&)
Iterator::operator->()
Iterator::operator++()
Iterator::operator*()
*/

enum FTTEqual {
  FTTEqual_0,
  FTTEqual_1,
};

/*
FTTPair<ushort,ushort>,
ushort,
PairHash,
FTTEqual,
FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>

uint (*pHashFunc)(T1 const&)
*/

template <typename T1, typename T2, typename Fhash, typename FTTEqual, typename T5>
class FTTHashTable {
public:
  FTTHashTable() {
    list_FTTVector_0 = nullptr;
    iCount_4 = 0;
    iInsertCount_8 = 0;
  }

  //^_^
  FTTHashTable(uint a1) {  // 001A20FA
    iCount_4 = a1;         // 002102FA   STRD.W          R5, R2, [R4,#4]
    iInsertCount_8 = 0;
    list_FTTVector_0 = new FTTVector<FTTPair<T1, T2>>[a1];
  };

  // 00210344 //^_^
  FTTHashTable& operator=(FTTHashTable const& other) {
    if (this != &other) {
      iCount_4 = other.iCount_4;
      iInsertCount_8 = other.iInsertCount_8;
      list_FTTVector_0 = new FTTVector<FTTPair<T1, T2>>[iCount_4];
      for (uint ud_r7 = 0; ud_r7 < iCount_4; ud_r7++) {  // 002103B6
        // 002103A4
        list_FTTVector_0[ud_r7] = other.list_FTTVector_0[ud_r7];
      }
    }
    return *this;
  }

  // 002103C0 //^_^
  ~FTTHashTable() {
    if (list_FTTVector_0 != nullptr) {
      delete[] list_FTTVector_0;
    }
    // loc_1A2388
  };

  // 00210C34  //^_^
  void Clear(bool b_r1_arg) {
    // LOGI("FTTHashTable::Clear %d", this->iCount_4);
    for (uint r7 = 0; r7 < iCount_4; r7++) {  // loc_210C4E
      // loc_210C40
      list_FTTVector_0[r7].Clear(b_r1_arg);
    }
    iInsertCount_8 = 0;
  }

  // FTTVector_FTTPair_ushort* ret, FTTHashTable_ushort *this, FTTPair_ushort *pPair

  /*
  off_3285E0
    .long _ZN9FTTVectorI7FTTPairIN18CFTTBMMMatrixCache3KeyENS1_10StartCountEEE8IteratorppEv+1     @ FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator::operator++(void)
    .long _ZN9FTTVectorI7FTTPairIN18CFTTBMMMatrixCache3KeyENS1_10StartCountEEE8IteratorneERKS6_+1 @ FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator::operator!=(FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator const&)
    .long _ZN9FTTVectorI7FTTPairIN18CFTTBMMMatrixCache3KeyENS1_10StartCountEEE8IteratordeEv+1     @ FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator::operator*(void)
    .long _ZN9FTTVectorI7FTTPairIN18CFTTBMMMatrixCache3KeyENS1_10StartCountEEE8IteratorptEv+1     @ FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator::operator->(void)
    .long _ZN9FTTVectorI7FTTPairIN18CFTTBMMMatrixCache3KeyENS1_10StartCountEEE8IteratorpLERKl+1   @ FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator::operator+=(long const&)
    .long _ZN9FTTVectorI7FTTPairIN18CFTTBMMMatrixCache3KeyENS1_10StartCountEEE8IteratormIERKl+1   @ FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator::operator-=(long const&)
    .long _ZN9FTTVectorI7FTTPairIN18CFTTBMMMatrixCache3KeyENS1_10StartCountEEE8IteratorixERKl+1   @ FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator::operator[](long const&)
    .long _ZN9FTTVectorI7FTTPairIN18CFTTBMMMatrixCache3KeyENS1_10StartCountEEE8IteratorplERKl+1   @ FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator::operator+(long const&)
    .long _ZN9FTTVectorI7FTTPairIN18CFTTBMMMatrixCache3KeyENS1_10StartCountEEE8IteratormiERKl+1   @ FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator::operator-(long const&)
    .long _ZN9FTTVectorI7FTTPairIN18CFTTBMMMatrixCache3KeyENS1_10StartCountEEE8IteratormiERKS6_+1 @ FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator::operator-(FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator const&)
    FTTHashTable::Iterator
  */

  typedef typename FTTVector<FTTPair<T1, T2>>::Iterator vit;

  class Iterator {
  public:
    // 001A898C
    // 00210834 FTTVector<FTTPair<CFTTBMMMatrixCache::Key, CFTTBMMMatrixCache::StartCount> >::Iterator::operator++()
    virtual void operator++() {
      list_4++;
    };

    // 001A8A0C
    // 00210824 FTTVector<FTTPair<CFTTBMMMatrixCache::Key, CFTTBMMMatrixCache::StartCount> >::Iterator::operator!=(FTTVector<FTTPair<CFTTBMMMatrixCache::Key, CFTTBMMMatrixCache::StartCount> >::Iterator const&)
    virtual bool operator!=(Iterator const& it1) {
      return list_4 != it1.list_4;
    };

    // 001A8A24
    // 00210994 FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::Iterator::operator*()
    virtual bool operator*() {
      return false;
    };

    // 001A8A28
    // 0021063C FTTHashTable<CFTTBMMMatrixCache::Key, CFTTBMMMatrixCache::StartCount, CFTTBMMMatrixCache::KeyHash, FTTEqual, FTTVector<FTTPair<CFTTBMMMatrixCache::Key, CFTTBMMMatrixCache::StartCount> > >::Iterator::operator->()
    virtual FTTPair<T1, T2>* operator->() {
      return it_c.list_4;
    };

    // 0021086C FTTVector<FTTPair<CFTTBMMMatrixCache::Key, CFTTBMMMatrixCache::StartCount> >::Iterator::operator+=(long const&)
    virtual Iterator operator+=(long const& l2) {
      Iterator it;
      list_4 += l2;
      it.list_4 = list_4;
      return it;
    };

    // 00210890 _ZN9FTTVectorI7FTTPairIN18CFTTBMMMatrixCache3KeyENS1_10StartCountEEE8IteratormIERKl
    virtual Iterator operator-=(long const& l2) {
      Iterator it;
      list_4 -= l2;
      it.list_4 = list_4;
      return it;
    };

    // 002108B8 FTTVector<FTTPair<CFTTBMMMatrixCache::Key, CFTTBMMMatrixCache::StartCount> >::Iterator::operator[](long const&)
    virtual FTTHashTable* operator[](long const& l1) {
      return &list_4[l1];
    };

    // 002108C8 FTTVector<FTTPair<CFTTBMMMatrixCache::Key, CFTTBMMMatrixCache::StartCount> >::Iterator::operator+(long const&)
    virtual Iterator operator+(long const& l2) {
      Iterator it;
      it.list_4 = list_4 + l2;
      return it;
    };

    // 002108E8 FTTVector<FTTPair<CFTTBMMMatrixCache::Key, CFTTBMMMatrixCache::StartCount> >::Iterator::operator-(long const&)
    virtual Iterator operator-(long const& l2) {
      Iterator it;
      it.list_4 = list_4 - l2;
      return it;
    };

    // 00210908 FTTVector<FTTPair<CFTTBMMMatrixCache::Key, CFTTBMMMatrixCache::StartCount> >::Iterator::operator-(FTTVector<FTTPair<CFTTBMMMatrixCache::Key, CFTTBMMMatrixCache::StartCount> >::Iterator const&)
    virtual int operator-(Iterator const& it1) {
      return list_4 - it1.list_4;
    };

    // size 0x14
    FTTHashTable* list_4;
    int dIndex_8;
    // typename FTTVector<FTTPair<T1, T2>>::Iterator it_c;
    vit it_c;
  };

  /*
  FTTHashTable<CFTTBMMMatrixCache::Key,
               CFTTBMMMatrixCache::StartCount,
               CFTTBMMMatrixCache::KeyHash,
               FTTEqual,
               FTTVector<FTTPair<CFTTBMMMatrixCache::Key, CFTTBMMMatrixCache::StartCount> > >::Find(CFTTBMMMatrixCache::Key)

  FTTALG::Find<FTTHashTable<CFTTBMMMatrixCache::Key,
                            CFTTBMMMatrixCache::StartCount,
                            CFTTBMMMatrixCache::KeyHash,
                            FTTEqual,
                            FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>> >::Compare,
                            CFTTBMMMatrixCache::Key,
                            FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator>(FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>::Iterator,CFTTBMMMatrixCache::Key const&)

  FTTHashTable<CFTTBMMMatrixCache::Key,
             CFTTBMMMatrixCache::StartCount,
             CFTTBMMMatrixCache::KeyHash,
             FTTEqual,
             FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>
             >::FTTHashTable(uint)

  */

  class Compare {
  public:
    static bool HashCompare(vit it1, T1 key) {
      return it1.list_4[0].m_t1 == key;
    }
  };

  // 001A216C 0021051C  经过单元测试，功能正常
  Iterator Find(T1 fnode) {
    Iterator it;
    //LOGI("FTTHashTable::Find 0021051C entry");
    uint r1 = Fhash::TableHash(fnode) % iCount_4;
    if (list_FTTVector_0[r1].use_count_C) {
      // 00210560
      //LOGI("FTTHashTable::Find 0021051C 00210560");
      vit it_vec_38;
      it_vec_38.list_4 = list_FTTVector_0[r1].list_0;

      vit it_vec_40;
      it_vec_40.list_4 = &list_FTTVector_0[r1].list_0[list_FTTVector_0[r1].use_count_C];

      //LOGI("FTTHashTable::Find 0021051C call find");
      vit it_vec_30 = FTTALG::Find<FTTHashTable::Compare,
                                   T1,
                                   vit>(it_vec_38,
                                        it_vec_40,
                                        fnode);
      if (it_vec_30 != list_FTTVector_0[r1].End()) {
        // 002105A4
        //LOGI("FTTHashTable::Find 0021051C 002105A4");
        it.list_4 = this;
        it.dIndex_8 = r1;
        it.it_c = it_vec_30;
      } else {
        // loc_2105B6 ok
        //LOGI("FTTHashTable::Find 0021051C loc_2105B6 111");
        it = End();
      }
    } else {
      // loc_2105B6 ok
      //LOGI("FTTHashTable::Find 0021051C loc_2105B6 222");
      it = End();
    }
    // loc_2105BE
    return it;
  }

  /*
  001A2250 FTTHashTable<FTTPair<ushort,ushort>,ushort,PairHash,FTTEqual,FTTVector<FTTPair<FTTPair<ushort,ushort>,ushort>>>::Insert(FTTPair<ushort,ushort>,ushort)
  FTTHashTable<FTTPair<unsigned short, unsigned short>,
              unsigned short,
              PairHash,
              FTTEqual,
              FTTVector<FTTPair<FTTPair<unsigned short, unsigned short>, unsigned short> > >::Insert(FTTPair<unsigned short, unsigned short>, unsigned short)

  00210640
  FTTHashTable<CFTTBMMMatrixCache::Key,
               CFTTBMMMatrixCache::StartCount,
               CFTTBMMMatrixCache::KeyHash,
               FTTEqual,
               FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::Insert(CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount)
  */
  void Insert(T1 aType1, T2 aType2) {
    FTTPair<T1, T2> tPair_18;
    tPair_18.m_t1 = aType1;
    tPair_18.m_t2 = aType2;

    uint r1 = Fhash::TableHash(aType1) % iCount_4;

    list_FTTVector_0[r1].Insert(tPair_18);
    iInsertCount_8++;
  };

  // 002105F4 FTTHashTable<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount,CFTTBMMMatrixCache::KeyHash,FTTEqual,FTTVector<FTTPair<CFTTBMMMatrixCache::Key,CFTTBMMMatrixCache::StartCount>>>::End(void)
  //经过单元测试，功能正常 (2022.02.28)
  __attribute__((noinline))
  Iterator End() {
    LOGI("FTTHashTable::End 002105F4");
    uint r4_ui = iCount_4 - 1;
    Iterator it;
    it.list_4 = this;
    it.dIndex_8 = r4_ui;
    it.it_c = list_FTTVector_0[r4_ui].End();
    return it;
  }

  FTTVector<FTTPair<T1, T2>>* list_FTTVector_0;
  uint iCount_4;        //初始化的数量
  uint iInsertCount_8;  //以后在尾部新插入的数量， 两者之和是list_FTTVector_0链表的总数
};

#endif  //_FTTHASHTABLE_H_
