Proud::CFastMap< K, V, KTraits, VTraits > 클래스 템플릿 참조

클래스

class  const_iterator
 
class  const_reverse_iterator
 
class  CPair
 
class  iterator
 
class  reverse_iterator
 
class  value_type
 

Public 타입

typedef KTraits::INARGTYPE KINARGTYPE
 
typedef KTraits::OUTARGTYPE KOUTARGTYPE
 
typedef VTraits::INARGTYPE VINARGTYPE
 
typedef VTraits::OUTARGTYPE VOUTARGTYPE
 
typedef CFastMap< K, V >
::const_iterator 
ConstIterType
 

Public 멤버 함수

 CFastMap (uint32_t nBins=17, float fOptimalLoad=0.75f, float fLoThreshold=0.25f, float fHiThreshold=2.25f)
 
intptr_t GetCount () const throw ()
 
intptr_t size () const
 
bool IsEmpty () const throw ()
 
bool Lookup (KINARGTYPE key, VOUTARGTYPE value) const
 
const CPairLookup (KINARGTYPE key) const throw ()
 
CPairLookup (KINARGTYPE key) throw ()
 
V & operator[] (KINARGTYPE key) throw ()
 
CNode * SetAt (KINARGTYPE key, VINARGTYPE value)
 
void SetValueAt (Proud::Position pos, VINARGTYPE value)
 
bool RemoveKey (KINARGTYPE key, bool rehashOnNeed=false) throw ()
 
 
void Clear ()
 
bool Remove (KINARGTYPE key, bool rehashOnNeed=false)
 
void RemoveAll ()
 
 
void RemoveAtPos (Proud::Position pos, bool rehashOnNeed=false) throw ()
 
Proud::Position GetStartPosition () const throw ()
 
Proud::Position GetEndPosition () const throw ()
 
void GetNextAssoc (Proud::Position &pos, KOUTARGTYPE key, VOUTARGTYPE value) const
 
const CPairGetNext (Proud::Position &pos) const throw ()
 
CPairGetNext (Proud::Position &pos) throw ()
 
CPairGetPrev (Proud::Position &pos) throw ()
 
const K & GetNextKey (Proud::Position &pos) const
 
const V & GetNextValue (Proud::Position &pos) const
 
V & GetNextValue (Proud::Position &pos)
 
void GetAt (Proud::Position pos, KOUTARGTYPE key, VOUTARGTYPE value) const
 
CPairGetPairByIndex (int index) throw ()
 
const CPairGetPairByIndex (int index) const throw ()
 
CPairGetAt (Proud::Position pos) throw ()
 
const CPairGetAt (Proud::Position pos) const throw ()
 
const K & GetKeyAt (Proud::Position pos) const
 
const V & GetValueAt (Proud::Position pos) const
 
V & GetValueAt (Proud::Position pos)
 
uint32_t GetHashTableSize () const throw ()
 
bool InitHashTable (uint32_t nBins, bool bAllocNow=true)
 
void EnableAutoRehash () throw ()
 
void DisableAutoRehash () throw ()
 
void Rehash (uint32_t nBins=0)
 
void SetOptimalLoad (float fOptimalLoad, float fLoThreshold, float fHiThreshold, bool bRehashNow=false)
 
void SetOptimalLoad_BestLookup (bool rehashNow=false)
 
intptr_t GetWorstBinItemCount ()
 
void EnableSlowConsistCheck ()
 
void KeysToArray (CFastArray< K > &output) const
 
void ValuesToArray (CFastArray< V > &output) const
 
void AssertConsist () const
 
 CFastMap (const CFastMap &a)
 
CFastMapoperator= (const CFastMap &a)
 
bool Equals (const CFastMap &a) const
 
void CopyKeysTo (CFastArray< K > &dest)
 
bool ContainsKey (const K &key)
 
bool ContainsValue (const V &val)
 
bool TryGetValue (KINARGTYPE key, VOUTARGTYPE value)
 
bool Add (KINARGTYPE key, VINARGTYPE value)
 
iterator begin ()
 
iterator end ()
 
value_type front ()
 
reverse_iterator rbegin ()
 
reverse_iterator rend ()
 
const_iterator begin () const
 
const_iterator end () const
 
const_reverse_iterator rbegin () const
 
const_reverse_iterator rend () const
 
reverse_iterator erase (reverse_iterator iter)
 
iterator erase (iterator iter)
 
iterator find (const K &key)
 
const_iterator find (const K &key) const
 
void UseFastHeap (CFastHeap *heap)
 
CFastHeapGetRefFastHeap ()
 

Friends

class const_iterator
 
class iterator
 
class reverse_iterator
 
class const_reverse_iterator
 

상세한 설명

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
class Proud::CFastMap< K, V, KTraits, VTraits >

(Key,Value) pair의 hash 알고리즘 기반 map class입니다. 상세한 내용은 맵 클래스 에 있습니다.

  • CAtlMap과 사용법이 동일합니다. 그러면서도 STL.map의 iterator 및 일부 메서드와 동일하게 사용할 수 있습니다. 게다가 .Net framework의 Dictionary class와 같은 형식으로도 쓸 수 있습니다.
  • 이 클래스의 iterator는 STL.map의 iterator보다 성능이 훨씬 빠른 성능을 냅니다.
매개변수
K콜렉션의 키 타입
V콜렉션의 값 타입
KTraits콜렉션의 키 타입을 다루는 특성을 정의한 클래스
VTraits콜렉션의 값 타입을 다루는 특성을 정의한 클래스
AllocTAllocType 값 중 하나

example code of traits class

class Foo
{
public:
string a;
int b;
};
class FooTraits
{
public:
// returns hash value of element
uint32_t Hash(const Foo& v)
{
// regularily, variables are XORed for hashing values.
return Hash(v.a) ^ Hash(v.b);
}
// true if two values are the same
inline static bool CompareElements(const Foo& e1, const Foo& e2)
{
return e1.a == e2.a && e1.b == e2.b;
}
// negative value if left is smaller.
// zero if the same.
// positive value if left is larger.
inline static int CompareElementsOrdered(const Foo& e1, const Foo& e2)
{
if (e1.a < e2.a)
return -1;
if (e1.a > e2.a)
return 1;
else
{
return e1.b - e2.b;
}
}
};
CFastMap<Foo, int, FooTraits> fooToIntMap;

생성자 & 소멸자 문서화

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
Proud::CFastMap< K, V, KTraits, VTraits >::CFastMap ( uint32_t  nBins = 17,
float  fOptimalLoad = 0.75f,
float  fLoThreshold = 0.25f,
float  fHiThreshold = 2.25f 
)
inline

생성자입니다.

매개변수
nBins기본 해시 테이블의 크기입니다. 솟수로 설정해야 제 성능을 냅니다. 상세한 내용은 맵 클래스 에 있습니다.
fOptimalLoad최적 부하 비율입니다. 상세한 내용은 맵 클래스의 부하 에 있습니다.
fLoThreshold최소 부하 비율입니다. 상세한 내용은 맵 클래스의 부하 에 있습니다.
fHiThreshold최대 부하 비율입니다. 상세한 내용은 맵 클래스의 부하 에 있습니다.
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
Proud::CFastMap< K, V, KTraits, VTraits >::CFastMap ( const CFastMap< K, V, KTraits, VTraits > &  a)
inline

CFastMap 은 복사 가능한 객체이다.

멤버 함수 문서화

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
bool Proud::CFastMap< K, V, KTraits, VTraits >::Add ( KINARGTYPE  key,
VINARGTYPE  value 
)
inline

새 항목을 추가한다.

매개변수
key추가할 항목의 key
value추가할 항목의 value
반환값
성공적으로 들어갔으면 true, 아니면 false를 리턴한다.
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::AssertConsist ( ) const
inline

내부 상태가 깨진 것이 없는지 확인한다.

  • 크기가 크더라도 inline으로 해둬야 빈 함수일때 noop가 된다. (regardless of compilers)
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
iterator Proud::CFastMap< K, V, KTraits, VTraits >::begin ( )
inline

STL의 동명 메서드와 같은 역할을 한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
const_iterator Proud::CFastMap< K, V, KTraits, VTraits >::begin ( ) const
inline

STL의 동명 메서드와 같은 역할을 한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::Clear ( )
inline

완전히 비운다

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
bool Proud::CFastMap< K, V, KTraits, VTraits >::ContainsKey ( const K &  key)
inline

key가 있는지 확인한다.

반환값
키가 있으면 true
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
bool Proud::CFastMap< K, V, KTraits, VTraits >::ContainsValue ( const V &  val)
inline

value가 있는지 확인한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::CopyKeysTo ( CFastArray< K > &  dest)
inline

key 집합을 모아서 준다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::DisableAutoRehash ( ) throw ()
inline

자동으로 Rehash를 하지 않습니다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::EnableAutoRehash ( ) throw ()
inline

자동으로 Rehash를 합니다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
iterator Proud::CFastMap< K, V, KTraits, VTraits >::end ( )
inline

STL의 동명 메서드와 같은 역할을 한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
const_iterator Proud::CFastMap< K, V, KTraits, VTraits >::end ( ) const
inline

STL의 동명 메서드와 같은 역할을 한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
bool Proud::CFastMap< K, V, KTraits, VTraits >::Equals ( const CFastMap< K, V, KTraits, VTraits > &  a) const
inline

CFastMap 은 비정렬 container인지라 비교 연산이 std.map 보다 느립니다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
reverse_iterator Proud::CFastMap< K, V, KTraits, VTraits >::erase ( reverse_iterator  iter)
inline

STL의 동명 메서드와 같은 역할을 한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
iterator Proud::CFastMap< K, V, KTraits, VTraits >::erase ( iterator  iter)
inline

STL의 동명 메서드와 같은 역할을 한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
iterator Proud::CFastMap< K, V, KTraits, VTraits >::find ( const K &  key)
inline

STL의 동명 메서드와 같은 역할을 한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
const_iterator Proud::CFastMap< K, V, KTraits, VTraits >::find ( const K &  key) const
inline

STL의 동명 메서드와 같은 역할을 한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::GetAt ( Proud::Position  pos,
KOUTARGTYPE  key,
VOUTARGTYPE  value 
) const
inline

Position이 가리키고 있는 곳의 key와 value를 얻는다.

매개변수
pos노드를 가리키는 Position
key해당노드의 key을 얻어옴
value해당 노드의 data를 얻어옴
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
CPair* Proud::CFastMap< K, V, KTraits, VTraits >::GetAt ( Proud::Position  pos) throw ()
inline

Position이 가리키고 있는 곳의 key와 value를 얻는다.

매개변수
posPosition정보
반환값
Position에 해당하는 CPair
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
const CPair* Proud::CFastMap< K, V, KTraits, VTraits >::GetAt ( Proud::Position  pos) const throw ()
inline

Position이 가리키고 있는 곳의 key와 value를 얻는다.

매개변수
posPosition정보
반환값
Position에 해당하는 const CPair
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
Proud::Position Proud::CFastMap< K, V, KTraits, VTraits >::GetEndPosition ( ) const throw ()
inline

보유하고 있는 항목 중 맨 뒤의 것을 얻는다.주로 reverse_iteration을 위해서 쓰인다. GetPrev 등을 써서 다음 항목을 iteration해 나갈 수있다.

반환값
맨 마지막 항목의 Position
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
uint32_t Proud::CFastMap< K, V, KTraits, VTraits >::GetHashTableSize ( ) const throw ()
inline

hash 테이블의 크기를 얻습니다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
const K& Proud::CFastMap< K, V, KTraits, VTraits >::GetKeyAt ( Proud::Position  pos) const
inline

Position이 가리키고 있는 곳의 key와 value를 얻는다.

매개변수
posnode를 가리키는 Position
반환값
Position이 가리키는 node의 key
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
const CPair* Proud::CFastMap< K, V, KTraits, VTraits >::GetNext ( Proud::Position pos) const throw ()
inline

다음 항목을 얻는다.

매개변수
pos가리키고 있는 node의 다음 Position을 얻어온다.
반환값
다음 node의 const CPair값을 리턴
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
CPair* Proud::CFastMap< K, V, KTraits, VTraits >::GetNext ( Proud::Position pos) throw ()
inline

다음 항목을 얻는다.

매개변수
pospos 가리키고 있는 node의 다음 Position을 얻어온다.
반환값
다음 node의 CPair 값을 리턴
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::GetNextAssoc ( Proud::Position pos,
KOUTARGTYPE  key,
VOUTARGTYPE  value 
) const
inline

다음 항목을 얻는다.

매개변수
[in,out]pos다음 항목의 Position값
[out]key다음항목의 key
[out]value다음 항목의 값
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
const K& Proud::CFastMap< K, V, KTraits, VTraits >::GetNextKey ( Proud::Position pos) const
inline

다음 항목을 얻는다.

매개변수
pos이 pos 가리키고 있는 node의 다음 Position을 얻어온다.
반환값
다음 node의 key값
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
const V& Proud::CFastMap< K, V, KTraits, VTraits >::GetNextValue ( Proud::Position pos) const
inline

다음 항목을 얻는다.

매개변수
pos이 pos 가리키고 있는 node의 다음 Position을 얻어온다.
반환값
다음 node의 const value값
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
V& Proud::CFastMap< K, V, KTraits, VTraits >::GetNextValue ( Proud::Position pos)
inline

다음 항목을 얻는다.

매개변수
pos이 pos 가리키고 있는 node의 다음 Position을 얻어온다.
반환값
다음 node의 value값
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
CPair* Proud::CFastMap< K, V, KTraits, VTraits >::GetPairByIndex ( int  index) throw ()
inline

해당 index에 있는 곳의 key와 value를 얻는다.

매개변수
index첫번째 정보로 부터 이 index만큼 다음노드로 이동한다.
반환값
찾은 노드의 CPair
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
const CPair* Proud::CFastMap< K, V, KTraits, VTraits >::GetPairByIndex ( int  index) const throw ()
inline

해당 index에 있는 곳의 key와 value를 얻는다.

매개변수
index첫번째 정보로 부터 이 index만큼 다음노드로 이동한다.
반환값
찾은 노드의 const CPair
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
CPair* Proud::CFastMap< K, V, KTraits, VTraits >::GetPrev ( Proud::Position pos) throw ()
inline

이전 항목을 얻는다.

매개변수
pospos가 가르키고 있는 node의 이전 Position을 얻어온다.
반환값
이전노드의 CPair
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
Proud::Position Proud::CFastMap< K, V, KTraits, VTraits >::GetStartPosition ( ) const throw ()
inline

보유하고 있는 항목 중 맨 앞의 것을 얻는다. 주로 iteration을 위해서 쓰인다. GetNext 등을 써서 다음 항목을 iteration해 나갈 수 있다.

반환값
맨앞 항목의 Position
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
const V& Proud::CFastMap< K, V, KTraits, VTraits >::GetValueAt ( Proud::Position  pos) const
inline

Position이 가리키고 있는 곳의 key와 value를 얻는다.

매개변수
posnode를 가리키는 Position
반환값
Position이 가리키는 node의 const data
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
V& Proud::CFastMap< K, V, KTraits, VTraits >::GetValueAt ( Proud::Position  pos)
inline

Position이 가리키고 있는 곳의 key와 value를 얻는다.

매개변수
posnode를 가리키는 Position
반환값
Position이 가리키는 node의 data
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
intptr_t Proud::CFastMap< K, V, KTraits, VTraits >::GetWorstBinItemCount ( )
inline

각 bin을 뒤져서, 최악의 bin, 즉 가장 많은 item을 가진 bin의 item 갯수를 리턴한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
bool Proud::CFastMap< K, V, KTraits, VTraits >::InitHashTable ( uint32_t  nBins,
bool  bAllocNow = true 
)
inline

hash 테이블을 초기화 합니다.

  • 노드 생성시 자동으로 호출됩니다.
    매개변수
    nBins헤쉬 사이즈
    bAllocNow헤쉬 메모리 생성 여부 설정
    반환값
    hash 초기화에 성공하면 true, 실패하면 false 리턴
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
bool Proud::CFastMap< K, V, KTraits, VTraits >::IsEmpty ( ) const throw ()
inline

텅빈 상태인가?

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::KeysToArray ( CFastArray< K > &  output) const
inline

map 객체의 key들을 모은 배열을 만들어 제공합니다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
bool Proud::CFastMap< K, V, KTraits, VTraits >::Lookup ( KINARGTYPE  key,
VOUTARGTYPE  value 
) const
inline

key에 대응하는 value를 얻는다.

매개변수
[in]key찾을 키
[out]value찾은 키에 대응하는 값이 저장될 곳
반환값
key를 찾았으면 true를 리턴한다.
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
const CPair* Proud::CFastMap< K, V, KTraits, VTraits >::Lookup ( KINARGTYPE  key) const throw ()
inline

key에 대응하는 value를 찾되, CPair 객체를 리턴한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
CPair* Proud::CFastMap< K, V, KTraits, VTraits >::Lookup ( KINARGTYPE  key) throw ()
inline

key에 대응하는 value를 찾되, CPair 객체를 리턴한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
CFastMap& Proud::CFastMap< K, V, KTraits, VTraits >::operator= ( const CFastMap< K, V, KTraits, VTraits > &  a)
inline

CFastMap 은 복사 가능한 객체이다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
V& Proud::CFastMap< K, V, KTraits, VTraits >::operator[] ( KINARGTYPE  key) throw ()
inline

key에 대응하는 value 값을 찾는다. 없을 경우 새 entry를 내부적으로 만든다

반환값
이미 있거나 새로 추가된 entry의 reference를 리턴한다.
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
reverse_iterator Proud::CFastMap< K, V, KTraits, VTraits >::rbegin ( )
inline

STL의 동명 메서드와 같은 역할을 한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::Rehash ( uint32_t  nBins = 0)
inline

hash 테이블을 다시 생성한다.

매개변수
nBinshash테이블의 크기
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
bool Proud::CFastMap< K, V, KTraits, VTraits >::Remove ( KINARGTYPE  key,
bool  rehashOnNeed = false 
)
inline

key가 가리키는 항목을 찾아 제거한다.

매개변수
key제거할 키
rehashOnNeedtrue인 경우, hash table이 충분히 작아진 경우 hash table을 재조정한다. 이때 사용중이던 iterator나 Position 가 있을 경우 이는 무효화됨을 주의해야 한다.
반환값
찾아서 제거를 했으면 true를 리턴한다. 못찾았으면 false다.
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::RemoveAll ( )
inline

완전히 비운다

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::RemoveAtPos ( Proud::Position  pos,
bool  rehashOnNeed = false 
) throw ()
inline

Position이 가리키는 곳의 key-value pair를 제거한다.

매개변수
pos일전에 얻은 Position 값. 이 값은 유효한 값이어야 한다!
rehashOnNeedtrue일 때, hash table이 충분히 작아진 경우 hash table을 재조정한다. 이때 사용중이던 iterator나 Position 가 있을 경우 이는 무효화됨을 주의해야 한다.
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
bool Proud::CFastMap< K, V, KTraits, VTraits >::RemoveKey ( KINARGTYPE  key,
bool  rehashOnNeed = false 
) throw ()
inline

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
reverse_iterator Proud::CFastMap< K, V, KTraits, VTraits >::rend ( )
inline

STL의 동명 메서드와 같은 역할을 한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
CNode* Proud::CFastMap< K, V, KTraits, VTraits >::SetAt ( KINARGTYPE  key,
VINARGTYPE  value 
)
inline

key,value pair를 새로 추가한다. 이미 있으면 오버라이트한다.

매개변수
key추가할 키값
value추가할 값 객체
반환값
추가를 한 후 추가 위치를 가리키는 포인터. Position이 베이스 클래스이므로 바로 Position을 리턴값으로 간주해도 된다.
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::SetOptimalLoad ( float  fOptimalLoad,
float  fLoThreshold,
float  fHiThreshold,
bool  bRehashNow = false 
)
inline

맵의 최적 부하를 재설정합니다. 맵의 최적 부하에 대해서는 맵 클래스의 부하 에 있습니다.

매개변수
fOptimalLoad최적 부하 비율입니다.
fLoThreshold부하 비율의 최소 한계입니다.
fHiThreshold부하 비율의 최대 한계입니다.
bRehashNowtrue이면 해시테이블 재설정이 즉시 시행됩니다.
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::SetOptimalLoad_BestLookup ( bool  rehashNow = false)
inline

lookup 최적 성능, 웬만해서는 rehash를 최대한 안하고, 그 대신 메모리를 많이 사용하는 설정. 증감폭이 워낙 큰데다 rehash cost가 큰 경우에 유용하다.

매개변수
rehashNow설정하면서 Rehash를 할것인지를 선택한다. true이면 Rehash를 함
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::SetValueAt ( Proud::Position  pos,
VINARGTYPE  value 
)
inline

일전에 얻은 Position 객체가 가리키는 곳의 value를 새로 넣는다.

매개변수
posvalue를 넣을 node의 Position
valuenode에 넣을 data
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
intptr_t Proud::CFastMap< K, V, KTraits, VTraits >::size ( ) const
inline

이미 갖고 있는 항목의 갯수를 구한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
bool Proud::CFastMap< K, V, KTraits, VTraits >::TryGetValue ( KINARGTYPE  key,
VOUTARGTYPE  value 
)
inline

key에 대응하는 value가 있으면 true를 리턴한다.

template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::UseFastHeap ( CFastHeap heap)
inline

내부 버퍼로 CFastHeap 을 사용한다.

매개변수
heapCFastHeap 포인터
template<typename K, typename V, typename KTraits = CPNElementTraits< K >, typename VTraits = CPNElementTraits< V >>
void Proud::CFastMap< K, V, KTraits, VTraits >::ValuesToArray ( CFastArray< V > &  output) const
inline

map 객체의 value들을 모은 배열을 만들어 제공합니다.