| ÀÌÀü ÁÖÁ¦ º¸±â :: ´ÙÀ½ ÁÖÁ¦ º¸±â |
| ±Û¾´ÀÌ |
¸Þ½ÃÁö |
Gamza

°¡ÀÔ: 2001³â 10¿ù 11ÀÏ ¿Ã¸° ±Û: 610
|
[ÆÁ?] Hashed string |
¿Ã·ÁÁü: 2002-08-17 15:06
|
|
°ÔÀÓÀ» ¸¸µé´Ù º¸¸é ¿ÀºêÁ§Æ®¸¦ À̸§À¸·Î ¾ò¾î¿Í¾ß ÇÒ¶§°¡ ÀÖ½À´Ï´Ù.
º¸Åë ¼Óµµ¸¦ À§ÇØ ¿ÀºêÁ§Æ®¸¦ Á¤·ÄÇØ³õ°ÔµÇÁÒ..(·Î±×½Ã°£ °Ë»ö)
À½...±×·±µ¥µµ....Á» ²¬²ô·¯¿î°ÍÀÌ....½ºÆ®¸µºñ±³¸¦ ÇØ¾ßÇÑ´Ù´Â °Ì´Ï´Ù.
¿ÀºêÁ§Æ®ÀÇ À̸§¿¡ ÇØ½¬Äڵ带 ³Ö¾îµÎ¸é ½ºÆ®¸µºñ±³¸¶Àú °ÅÀÇ ¾ø¾Ù¼ö ÀְԵ˴ϴÙ.
| ÄÚµå: |
class GameObject
{
public:
void SetName( const char*Name )
{
m_Name = Name;
m_HashCode = GetHashCode( Name );
}
inline virtual bool operator < ( const GameObject& Obj ) const
{
if( m_HashCode != Obj.m_HashCode )
return m_HashCode < Obj.m_HashCode;
return strcmp( m_Name, Obj.m_Name ) < 0;
}
...
} |
70000°³ÀÇ ÆÄÀϸíÀ» Å×½ºÆ® ÇØº»°á°ú ¹®ÀÚ¿ ºñ±³È½¼ö°¡
ÃÖ´ë17/Æò±Õ16.15 ȸÀÌ´ø°ÍÀÌ, ÃÖ´ë4/Æò±Õ1.01 ȸ ·Î ÁÙ¾îµé¾ú½À´Ï´Ù.
°Ë»öµÈ ¹®ÀÚ¿ÀÌ Á¤È®ÇÑÁö È®ÀÎÇϱâÀ§ÇÑ 'ÃÖÁ¾1ȸ'ÀÇ ¹®ÀÚ¿ ºñ±³¸¸ ÀÏ¾î³ ¼ÀÀÌÁÒ.
Á¦°¡ Å×½ºÆ®ÇÑ ÇØ½¬ ÇÔ¼ö´Â ÀÌ·¸½À´Ï´Ù.
| ÄÚµå: |
unsigned long GetHashCode( const char* String )
{
unsigned long i,len;
unsigned long ch;
unsigned long result;
unsigned long XOR;
len = strlen( String );
result = 0;
XOR = 0;
for( i=0; i |
_________________ HOME: http://www.Gamza.net
Gamza °¡ 2002-08-18 13:50¿¡ ¼öÁ¤ÇÔ, ÃÑ 1 ¹ø ¼öÁ¤µÊ |
|
| À§·Î |
|
 |
Xine

°¡ÀÔ: 2002³â 8¿ù 12ÀÏ ¿Ã¸° ±Û: 252
|
|
¿Ã·ÁÁü: 2002-08-17 16:25
|
|
ÀÌ..ÀÌ·¸°ÔÁÁÀº... ²ÀÇÊ¿äÇÑ ½Ã±â¿¡ ÀÌ·¸°Ô ÁÁÀº ³»¿ëÀ»
¿Ã·ÁÁֽôٴÏ...
ÇØ½¬¸¦ ¾µ»ý°¢À» ¸øÇϰíÀÖ¾ú³×¿ä..
Àß¾²°Ú½À´Ï´Ù~ Áö±Ý ´çÀå ºÙ¿©¾ß°Ú¾î¿ä... texture managerµîµî.. ^.^
Á¤¼öID¸¦ µÑ·Á°íµµ Çߴµ¥... ¿ª½Ã³ª ÇÁ·Î±×·¥ÀÌ Ä¿Áö¸é Ä¿Áú¼ö·Ï
¹®ÀÚ¿À̸§À» ¿ÀºêÁ§Æ®¿¡ ºÙÀÎ´Ù´Â°Ô ¾ÆÁÖ ÆíÇѵ¥...
ÀÌ·¸ÄÉÇØ¼ ¾²¸é µÎ°¡Áö ÀÕÁ¡À» ¸ðµÎ¾ò°Ú³×¿ä.. _________________ ÀÌ´öÈñ |
|
| À§·Î |
|
 |
Zho

°¡ÀÔ: 2001³â 8¿ù 2ÀÏ ¿Ã¸° ±Û: 328 ¼Ò¼Ó: Ãë¹Ì°ÔÀÓ°³¹ßÀÚ
|
ÁöÈ£ÀÇ ÇØ½¬ Å×ÀÌºí ¼Ò½º °ø°³!!! |
¿Ã·ÁÁü: 2002-08-18 02:16
|
|
ÇØ½¬¾Ë°í¸®ÁòÀº ¿ä°É ÂüÁ¶Çß½À´Ï´Ù. ºü¸£°í ¾µ¸¸ÇÏ´Ù°í ÇÏ´õ¶ó±¸¿ä. Àú´Â °³ÀÎÀûÀ¸·Î Ưº°È÷ Å×½ºÆ®´Â ¾È ÇØºÃ½À´Ï´Ù. ³²µéÀÌ ÁÁ´Ù°í ÇÏ´Ï ¾²´Â°ÅÁÒ..^^
http://www.cs.yorku.ca/~oz/hash.html
¾Æ·¡´Â Á¦°¡ ¸¸µç ±Øºñ ÄÚµåÀÇ ÀϺκÐ.... ^^
| ÄÚµå: |
/**
* @file zz_hash_table.h
* @brief hash table class.
* @author Jiho Choi (zho@korea.com)
* @version 1.0
* @date 20-jun-2002
*
* $Id: zz_hash_table.h,v 1.4 2002/07/13 20:32:05 zho Exp $
*/
#ifndef __ZZ_HASH_TABLE_H__
#define __ZZ_HASH_TABLE_H__
#define ZZ_HASH_DEFAULT_SIZE 64
#include
#include "zz_mem.h"
#include "zz_log.h"
/*
bucket#0 : slot#1<->slot#2<->slot#3<->....<->slot#n->NULL
bocket#1 : slot#1<->....
.....
bucket#n : ....
bucket# = hash_function(string);
*/
template
class zz_hash_table {
private:
struct _slot {
char * key; // string name
_slot * prev; // link in slot list
_slot * next;
_slot * list_prev; // double link list to traverse
_slot * list_next;
T data;
_slot () : key(NULL), next(NULL), prev(NULL), list_prev(NULL), list_next(NULL) {}
~_slot () {
if (key) { // if allocated name exist, delete it.
zz_delete[] key; // newed in set_key()
}
if (prev) {
prev->next = next;
}
if (next) {
next->prev = prev;
}
if (list_prev) {
list_prev->list_next = list_next;
}
if (list_next) {
list_next->list_prev = list_prev;
}
}
void set_key (const char * key_to_set) {
key = zz_new char[strlen(key_to_set)+1]; // will be deleted in ~_slot()
strcpy(key, key_to_set);
}
};
_slot ** _bucket; // bucket. comprises slot pointers
int _bucket_size; // bucket size. the number of slot lists
_slot * _head, * _tail; // for sequential access
int _count; // total allocated slot number
// find slot with same key
_slot * _find_slot (const char * key) {
_slot * found_slot = _bucket[_hash(key)];
while (found_slot) {
if (!strcmp(found_slot->key, key)) {
return found_slot;
}
found_slot = found_slot->next;
}
return NULL;
}
// slot initialize
void _init (void) {
_head = NULL;
_tail = NULL;
_count = 0;
_bucket = zz_new _slot * [_bucket_size]; // * means pointer. not multiplication
for (int i = 0; i < _bucket_size; i++) {
_bucket[i] = NULL;
}
}
int _hash (const char * key_to_hash) {
// [ref] djb2 hash algorithm
// http://www.cs.yorku.ca/~oz/hash.html
unsigned long hash_code = 5381;
int c;
while (c = *key_to_hash++)
hash_code = ((hash_code << 5) + hash_code) + c; // hash * 33 + c
return (hash_code % _bucket_size);
//unsigned char c;
//int i = 0;
//long hash_code = 0;
//while (c = (unsigned char)key_to_hash[i++]) {
// hash_code += c*i; // i >= 1
//}
//return (hash_code % _bucket_size);
}
public:
zz_hash_table(void) : _bucket_size(ZZ_HASH_DEFAULT_SIZE) {
_init();
}
// size : bucket size
zz_hash_table(int size) : _bucket_size(size) {
_init();
}
~zz_hash_table(void) {
for (int i = 0; i < _bucket_size; i++) {
if (_bucket[i]) {
zz_delete _bucket[i];
_count--;
}
}
assert(_count == 0);
zz_delete _bucket;
}
bool insert (const char * key, T value) {
_slot * end_slot, * new_slot = NULL;
if (find(key)) {
return false; // already exist same key
}
int hash_code = _hash(key);
end_slot = _bucket[hash_code];
while (end_slot && end_slot->next) {
end_slot = end_slot->next;
}
new_slot = zz_new _slot;
if (new_slot == NULL) {
return false;
}
new_slot->set_key(key);
new_slot->data = value;
if (end_slot) {
new_slot->prev = end_slot;
end_slot->next = new_slot;
}
else {
_bucket[hash_code] = new_slot;
}
// for list, add to tail slot
if (_tail) {
new_slot->list_prev = _tail;
_tail->list_next = new_slot;
_tail = new_slot;
}
if (!_head) { // if thi
assert(!_tail);
_head = new_slot;
_tail = new_slot;
}
++_count;
return true;
}
bool remove (const char * key) {
_slot * found_slot = _find_slot(key);
assert(!strcmp(found_slot->key, key));
if (!found_slot)
return false; // not found
int hash_code = _hash(key);
if (!strcmp(found_slot->key, _bucket[hash_code]->key)) { // if it is the head of the slot
_bucket[hash_code] = found_slot->next;
}
if (_head == found_slot) { // if it is the head of the list
_head = found_slot->list_next;
}
zz_delete found_slot;
--_count;
return true;
}
T find (const char * key) {
_slot * found_slot = _find_slot(key);
if (!found_slot) {
return NULL;
}
return found_slot->data;
}
void dump (void) {
_slot * found_slot = _head;
ZZ_LOG("hash_table: dump(), size(%d)\n", _count);
while (found_slot) {
ZZ_LOG("%s, ", found_slot->key);
found_slot = found_slot->list_next;
}
ZZ_LOG("\n\n");
}
int size (void) {
return _count;
}
class iterator {
friend zz_hash_table;
private:
_slot * _current;
public:
iterator() : _current(NULL) {}
~iterator() {}
iterator& operator++() {
if (_current) {
_current = _current->list_next;
}
return *this;
}
iterator& operator++(int i) {
if (_current) {
_current = _current->list_next;
}
return *this;
}
iterator& operator--() {
if (_current) {
_current = _current->list_prev;
}
return *this;
}
iterator& operator--(int i) {
if (_current) {
_current = _current->list_prev;
}
return *this;
}
bool operator!=(iterator& it) {
return (it._current != _current);
}
bool operator==(iterator& it) {
return (it._current == _current);
}
T operator*() {
if (_current) {
return _current->data;
}
return NULL;
}
};
iterator begin (void) {
iterator it;
it._current = _head;
return it;
}
iterator end (void) {
iterator it;
it._current = NULL;
return it;
}
void erase (iterator it) {
remove(it._current->key);
}
void clear (void) {
iterator it = begin();
while (it != end()) {
erase(it);
it = begin();
}
assert(_count == 0);
assert(!_tail && !_head);
}
};
// usage:
/*
zz_hash_table tab(100);
tab.insert("one", 1);
tab.insert("two", 2);
tab.insert("three", 3);
tab.insert("four", 4);
tab.insert("five", 5);
int zho;
if (tab.find("five", zho)) {
ZZ_LOG("main: tab.find (three = %d)\n", zho);
}
tab.remove("five");
if (!tab.find("five", zho)) {
ZZ_LOG("main: tab.find failed.\n");
}
*/
#endif // __ZZ_HASH_TABLE_H__ |
|
|
| À§·Î |
|
 |
toki
°¡ÀÔ: 2002³â 4¿ù 13ÀÏ ¿Ã¸° ±Û: 151 ¼Ò¼Ó: ´ëÇѹα¹
|
À½ ¼º´É ºñ±³ Á» ÇÑ ¹ø ÇØÁÖ¼¼¿ä. |
¿Ã·ÁÁü: 2002-08-18 20:37
|
|
Àú´Â ±×³É managerÀÛ¼ºÇÒ¶§, stl::map»ç¿ëÇØ¼ key°ªÀ¸·Î stringÀ»
³Ö¾î¼ ¾²´Âµ¥ ±×·¸°Ô °Ë»öÀÌ ´À¸®´Ù°í »ý°¢ÀÌ µÇÁö´Â ¾Ê´Âµ¥, °¨ÀÚ´Ô
ÀÇ Ç콬¾Ë°í¸®ÁòÀ» »ç¿ëÇÑ ºñ±³¿Í ¾î´ÀÁ¤µµÀÇ Â÷À̰¡ ³ª´ÂÁö ÇÑ ¹øÂë
¼º´É ºñ±³¸¦ ÇØÁÖ¼ÌÀ¸¸é °¨»çÇϰڽÀ´Ï´Ù.
À̰Š³Ê¹« ¿°Ä¡°¡ ¾ø³ª¿ä?  |
|
| À§·Î |
|
 |
Gamza

°¡ÀÔ: 2001³â 10¿ù 11ÀÏ ¿Ã¸° ±Û: 610
|
|
¿Ã·ÁÁü: 2002-08-18 21:57
|
|
±»ÀÌ ¼º´Éºñ±³¶ó ÇÑ´Ù¸é Æò±Õ10ȸÀÌ´ø ¹®ÀÚ¿ ºñ±³°¡ 1ȸ·Î ÁÙ¾îµç´Ù..Á¤µµ..
´Ü¼øÇÑ ÀÌÁøÅ½»öÀÌ ¾Æ´Ñ ÀûÈæÆ®¸®¸¦ »ç¿ëÇÏ´Â mapÀϰæ¿ì¿£ Æò±ÕÀûÀ¸·Î´Â Á»´õ ÀûÀº ºñ
±³°¡ ÀϾٰíÇÏ´Ï 10ȸ±îÁö´Â ¾È°¥Áöµµ ¸ð¸£°Ú½À´Ï´Ù.
¾î·µç ¿ÀºêÁ§Æ®¸¦ °Ë»öÇÒ¶§¸¶´Ù 10¹ø Á¤µµÀÇ ¹®ÀÚ¿ºñ±³¶ó.....
ÇÁ·ÎÆÄÀÏ·¯ µ¹·Áº¸°í ¹®Á¦°¡ ¾ÈµÈ´Ù¸é ±×³É ½ß±î¸é ±×¸¸ÀÌÁö¸¸....
±×³É Á» ²¬²ô·´´Ù´Â°ÅÁÒ.....
±¦È÷ ¼ýÀÚID°°Àº°É ºÙÀÌ°íµµ ½Í¾îÁö°í....
¼ýÀÚID¾²±âÀü¿¡ ÇØ½¬¸¦ Çѹø »ý°¢ÇØ º½Á÷ÇÏÁö ¾ÊÀ»±î ½Í³×¿ä.
(¹®ÀÚ¿·Î ½ÇÄÆÂ¥³õ±¸¼± ÇÁ·ÎÆÄÀϸµÇغôõ´Ï °É¸®´õ¶ó...ÀÌ·²¶§µµ °£´ÜÈ÷ Àû¿ëÀÌ µÇÁÒ. ¼ýÀÚID·Î ¹Ù²Ù·Á¸é ½Ã½ºÅÛ Àüü°¡ ¼öÁ¤µÇ¾î¾ß ÇÏ´Â »çŰ¡...)
^.^
°¨ÀÚ ¼º¼ö¿Ã¸²...@~
PS. »ç½Ç ¹®ÀÚ¿ÀÇ ÇØ½¬°Ë»öÀ» Àû¿ëÇÏ°Ô µÈ°Ç....
ȸ»ç¿¡¼ °³¹ßÁßÀÌ´ø ÀÓº£µðµå ½Ã½ºÅÛ¿¡¼ ÆÄÀϽýºÅÛÀ» ¸¸µé¶§ fopenÀÌ ´À¸®´Ù´Â
º¸°í°¡ µé¾î¿Ô¾ú±â ¶§¹®ÀÔ´Ï´Ù. ( ÀϺ»Ãø... )
(¾Æ¹«·¡µµ ¿À¶ô½Ç¿¡¼ now loading....µûÀ§´Â......T.T)
±×¶§µµ ¹®ÀÚ¿ºñ±³,ÀÌÁøÅ½»öÀ» ¾²±äÇß¾ú´Âµ¥....
¾î·µç ÇØ½¬¸¦ ¾²°í³ª´Ï ±×¿¡´ëÇØ¼± Çѹøµµ ºÒÆòÀÌ ¾È³ª¿À´õ±º¿ä.
GPG¿¡ ³ª¿Â ¸®¼Ò½º¸¦ ÇϳªÀÇ ÆÄÀÏ¿¡ ³Ö´Â°Í °°Àº°É ±¸ÇöÇÒ¶§µµ ÀÀ¿ëÇÒ¼ö ÀÖÁö ¾ÊÀ»±î ½Í½À´Ï´Ù.
(ÆÄÀϳ»ºÎ¿¡ ÀÖ´Â ÆÄÀÏÀ» ¹®ÀÚ¿·Î °Ë»öÇØ¾ß ÇÏ´Ï...) _________________ HOME: http://www.Gamza.net |
|
| À§·Î |
|
 |
ºÓÀº¹Ì¸£ ¼Õ´Ô
|
Good |
¿Ã·ÁÁü: 2002-08-19 10:26
|
|
ÇöÀç °ÔÀÓÀûÀ¸·Î ½É½ÉÇ®ÀÌ·Î ¸¸µé°í ÀÖ´Â Äڵ忡¼ ¸ðµç °ÍÀ» stringÀ¸·Î ó¸®Çϰí ÀÖ¾ú½À´Ï´Ù. º¸±â¿¡ ÁÁ´Ù´Â ÀÌÀ¯¸¸À¸·Î....
stringÀ¸·Î Çϸ鼵µ ÇÑÂÊÀ¸·Î ¼Óµµ¿¡ ´ëÇÑ ºÒ¾È°¨À» °¡Áö°í ÀÖ½À´Ï´Ù.
°¨ÀÚ´Ô¿¡ ÇѹæÀ¸·Î ÀÌ·± ºÒ¾È°¨À» ÀáÀç¿öÁֽô ±º¿ä.
¼Ò½º¸¦ ¼öÁ¤ÇØ¾ß °Ú½À´Ï´Ù.
ºÓÀº¹Ì¸£´Â ¹Ý¼ºÇØ¾ß ÇÕ´Ï´Ù.
ÇØ½¬ ÇÔ¼ö, ÇØ½¬ Å×À̺íÀ̶ó´Â ¿ë¾î¿¡¸¸ Àͼ÷ÇØÁ®¼ ³ªÅÂÇÔ¿¡ ºüÁ³½À´Ï´Ù. ¿ë¾î¸¸ ¾Ë¸é ¾Æ´Â °Í ó·³ »ý°¢ÇÏ´Ù´Ï....
°¨ÀÚ´ÔÀÇ ÇØ½¬ ÇÔ¼ö·Î ÇØ½¬¶ó´Â °Í¿¡ ´ëÇØ¼ ÇÔ °øºÎÇØº¼±îÇÏ´Â »ý°¢ÀÌ µé¾ú½À´Ï´Ù. ºñÀü»êÀÎÀÇ ºñ¾Ö....TT
ºÓÀº¹Ì |
|
| À§·Î |
|
 |
toki
°¡ÀÔ: 2002³â 4¿ù 13ÀÏ ¿Ã¸° ±Û: 151 ¼Ò¼Ó: ´ëÇѹα¹
|
Àç¹ÌÀֳ׿ä. |
¿Ã·ÁÁü: 2002-08-19 11:22
|
|
°°Àº ³»¿ëÀÌ flipcode ToTD¶õ¿¡ ¶° Àֳ׿ä. -°°´Ù´Â ¸»ÀÌ Äڵ尡 ¶È°°´Ù¶ó´Â ¸»ÀÌ ¾Æ´Ï¶ó´Â °ÍÀº ´Ùµé ¾Æ½Ã°ÚÁÒ. ÀÌ»óÇÑ ¿ÀÇØ¸¦ ÇϽô ºÐµéÀÌ ¾ø°ÚÁÒ. ³Ê¹« ¸¹ÀÌ ´çÇØ¼¸® ÈæÈæ...
http://www.flipcode...forum=totd&id=-1
ÇÑ ¹ø È®Àεé ÇØº¸¼¼¿ä. |
|
| À§·Î |
|
 |
Gamza

°¡ÀÔ: 2001³â 10¿ù 11ÀÏ ¿Ã¸° ±Û: 610
|
Áú¹® |
¿Ã·ÁÁü: 2002-08-19 11:51
|
|
toki´ÔÀÌ ¸µÅ©ÇØ ³õÀ¸½Å°÷¿¡ °¡ºÃ½À´Ï´Ù.
¾ÆÁ÷Àº °ø·ÂÀÌ ºÎÁ·ÇÑÁö..... ÇØ½¬ÇÔ¼ö(size_t)°¡ ¾ðÁ¦ È£ÃâµÇ´ÂÁö Àß ¸ð¸£°Ú³×¿ä..^.^;;
ÀÚÄ©À߸øÇؼ ºñ±³ÇÒ¶§¸¶´Ù ÇØ½¬ÇÔ¼ö°¡ È£ÃâµÇ°Å³ª Çϸé Å«ÀÏÀ̶ó...
ºñ±³¿¬»êÀÚ(operator <,==) ¾È¿¡ ÇØ½¬°ªÀÌ ÀüÇô »ç¿ëµÇÁö ¾Ê´Â°Í ó·³ º¸À̴°͵µ ±Ã±Ý..
¸¶Áö¸·À¸·Î ±×¹Ø¿¡ ÀÖ´Â ¸®ÇÃÀº ¹®Á¦°¡ Á» Àִµí...
| ÄÚµå: |
then create a map
to add:
map[ Hash( "XBOX" ) ] = 20;
|
À̰ÍÀº ¸ðµç ½ºÆ®¸µÀÌ ´Ù¸¥ ÇØ½¬°ªÀ» °®´Â´Ù´Â ÀüÁ¦ÇÏ¿¡¼¸¸ Á¦´ë·Î µ¿ÀÛÇÒ°Í °°Àºµ¥... _________________ HOME: http://www.Gamza.net |
|
| À§·Î |
|
 |
toki
°¡ÀÔ: 2002³â 4¿ù 13ÀÏ ¿Ã¸° ±Û: 151 ¼Ò¼Ó: ´ëÇѹα¹
|
implict conversionÀ̳׿ä |
¿Ã·ÁÁü: 2002-08-19 13:16
|
|
operator size_t() const
ÀϹÝÀûÀ¸·Î type cast¿¡ °üÇÑ overload¶ó°í ÇÏÁÒ. - ¾Æ´Ñ°¡?
¸¸¾à ÀÓÀÇÀÇ class AÀÛ¼ºÇϰí¼
³»ºÎ ¸â¹öÁß¿¡ int¸â¹ö°¡ Àִµ¥ integer·Î conversionÇßÀ»¶§,
ÀÌ °ªÀ» ÁÖ°í ½Í´Ù¸é
operator int() const { return m_int; }ÀÌ·±½ÄÀ¸·Î Çϰí
A a; ...
int i = a; ¶ó°í Çϸé ÀÚµ¿ÀûÀ¸·Î operator int()°¡ È£ÃâµÇÁö¿ä.
¸ð¾çÀ» º¸´Ï ÀÌ°Í °°Àºµ¥ size_t¸¦ ¾µ ¶§°¡ ÀÖ´ÂÁö? |
|
| À§·Î |
|
 |
soaringhs

°¡ÀÔ: 2001³â 7¿ù 30ÀÏ ¿Ã¸° ±Û: 230
|
hash_map<>ÀÇ hash functor Àεí... |
¿Ã·ÁÁü: 2002-08-19 13:47
|
|
functor°¡ ¸Â´Â ¿ë¾î´ø°¡¿ä? ¾ÆÁ÷µµ C¸¦ ÁÖ·Î ¾²´Ùº¸´Ï Çß°¥¸®´Â±º¿ä. Ã¥ÀÌ ¾îµð ÀÖ´õ¶ó...... --;
STL PortÀÇ _hash_fun.h º¸´Ï±î...
| ÄÚµå: |
template struct hash { };
inline size_t __stl_hash_string(const char* __s)
{
_STLP_FIX_LITERAL_BUG(__s)
unsigned long __h = 0;
for ( ; *__s; ++__s)
__h = 5*__h + *__s;
return size_t(__h);
}
_STLP_TEMPLATE_NULL struct hash
{
size_t operator()(const char* __s) const { _STLP_FIX_LITERAL_BUG(__s) return __stl_hash_string(__s); }
};
|
flipcodeÀÇ HashStringÀº ´ÜÁö __stl_hash_string(const char* __s)¸¦ ´ë½ÅÇϰڴٴ°ÍÀε¥ ±×·³ VC7ÀÇ STL ÇØ½¬ÇÔ¼ö°¡ ´õ ºñ½Î´Ù´Â ¿¹±â¹Û¿¡ ¾ÈµÇ´Â°Í °°³×¿ä.
VC7 »ç¿ëÇϽôºеéÀÌ È®ÀÎÇØ Áֽô°ÍÀÌ...
-----
³ªÁß¿¡ Ãß°¡
flipcode¿¡ ÀÖ´Â°Í ´Ù½Ã Àо´Ï hash_map<std::string, int> map¿¡¼ Ű·Î »ç¿ëµÇ´Â std::stringÀÇ Àӽûý¼ºÀÇ ¿À¹öÇØµå¸¸ ÇØ°áÇѰÍÀ̱º¿ä.
ÇØ½¬ÇÔ¼öÇÏ°ï »ó°ü ¾ø´Â¹®Á¦¿´³×¿ä... |
|
| À§·Î |
|
 |
Gamza

°¡ÀÔ: 2001³â 10¿ù 11ÀÏ ¿Ã¸° ±Û: 610
|
ÇØ½ÃÇÔ¼ö ¼º´É Å×½ºÆ® |
¿Ã·ÁÁü: 2002-12-22 20:35
|
|
ÇÒÀϾø¾î¼....µð·ºÅ丮¸¦ µÚÀûµÚÀû°Å¸®´Ù....Àü¿¡ Á» ÂòÂòÇß´ø ºÎºÐÀÌ »ý°¢³ª¼...
Å×½ºÆ®¸¦ ÇØ º¸¾Ò½À´Ï´Ù.
Á¦ÀÏ À§¿¡ Á¦°¡ ¸¸µé¾î »ç¿ëÇß´Ù´ø ÇØ½ÃÇÔ¼ö¿Í
ÁöÈ£´ÔÀÌ »ç¿ëÇϽÅ(Çø³Äڵ忡µµ ³ª¿ÍÀÖ´Â)ÇØ½Ã ÇÔ¼öÀÇ ¼º´É ºñ±³ÁÒ..
¾Æ¹«·¡µµ Á¦°¡ ³¯¸²À¸·Î ¸¸µç°Í º¸´Ù´Â ¼º´ÉÀÌ ÁÁÀ¸¸®¶ó »ý°¢Àº Çß½À´Ï´Ù¸¸....
....Å×½ºÆ® ÇØº¸´Ï ¿ª½Ã....°øÀεÈ(?)°ÍÀÌ È®½ÇÈ÷ ÁÁ´õ±º¿ä
±¦È÷ ÀܸӸ® ±¼¸®Áö ¸»°í ÆÛ´Ù ¾µ°É ±×·¨³ª º¾´Ï´Ù.
70000°³ÀÇ ÆÄÀϸíÀ» º¤ÅÍ¿¡ Á¤·ÄÇØ¼ ³Ö¾îµÎ°í ¸ðµç ¹®ÀÚ¿À» Çѹø¾¿ °Ë»öÇØ
º¸´Â Å×½ºÆ®¸¦ ÇØº¸¾Ò½À´Ï´Ù. ¾Æ·¡´Â ¹®ÀÚ¿ ºñ±³ Ƚ¼öÀÔ´Ï´Ù.
ÇØ½ÃÇÔ¼ö »ç¿ë¾ÈÇÔ: ÃÖ´ë17 / Æò±Õ16.15 ȸ
Á¦°¡ ¸¸µé¾ú´Ù´ø ÇØ½ÃÇÔ¼ö: ÃÖ´ë 4 / Æò±Õ1.012 ȸ
Çø³Äڵ忡 ³ª¿Â ÇØ½ÃÇÔ¼ö: ÃÖ´ë 2 / Æò±Õ1.000028 ȸ
¸¸µé±âÀü¿¡ ÀÌ¹Ì ÃæºÐÈ÷ ¿¬±¸µÇ¾î »ç¿ëµÇ´Â°ÍÀÌ ÀÖ´ÂÁö ¾Ë¾Æº¸¶ó´Â°ÍÀ»
´Ù½ÃÇѹø ±ú´Ý´Â ¼ø°£À̾ú½À´Ï´Ù.
±¦È÷ ã¾Æ´Ù´ÏÁö ¾Ê°Ô ÇÔ¼öµµ °°ÀÌ ¿Ã¸®ÁÒ..
(»ç½Ç ÁöÈ£´Ô ¼Ò½º¿¡µµ...ÁöÈ£´Ô±Û ¸µÅ©¿¡µµ...À§¿¡ ¸µÅ©µÈ Çø³Äڵ忡µµ...´Ù ÀÖ½À´Ï´Ù¸¸...¤Ñ.¤Ñ;;; )
| ÄÚµå: |
unsigned long GetHashCode( const char* pString )
{
unsigned long i,len;
unsigned long ch;
unsigned long result;
len = strlen( pString );
result = 5381;
for( i=0; ihash * 33 + ch
}
return result;
} |
PS. À̰ŠÅ×½ºÆ® ÇÏ¸é¼ À̰Ͱú ´õºÒ¾î ¿Ã·È´ø binary_find ÀÇ ±¸Çö»ó ÁÖÀÇÇÒÁ¡µµ ¹ß°ßÇÏ°Ô µÇ¾ú½À´Ï´Ù.
±×°Ç binary_find¿¡ µû·Î ¿Ã¸®ÁÒ. _________________ HOME: http://www.Gamza.net |
|
| À§·Î |
|
 |
·ù±¤

°¡ÀÔ: 2001³â 7¿ù 25ÀÏ ¿Ã¸° ±Û: 3413 ¼Ò¼Ó: GPGstudy
Ÿ »çÀÌÆ® ID(?): docbook.kr::·ù±¤
|
|
¿Ã·ÁÁü: 2002-12-23 01:26
|
|
¿ª½Ã ã¾Æ´Ù´Ï´Â ¼ö°í¸¦ ´ú±â À§ÇØ.... °¨ÀÚ´ÔÀÇ binary_find °ü·Ã ±ÛÀº http://www.gpgstudy...opic.php?p=4232#4232 ÀÔ´Ï´Ù.
óÀ½¿¡ ÀÌ ÁÖÁ¦¸¦ ÀоúÀ» ¶§¿¡´Â ÀÌÇØ°¡ Àß ¾È µÇ¾ú´Âµ¥ binary_find ±ÛÀÇ compare()¸¦ ´Ù½Ã º¸´Ï ÀÌÁ¦ Á¶±Ý ÀÌÇØ°¡ µÉ °Í °°½À´Ï´Ù... À§¿¡ ³ª¿Â ÇØ½ÃÇÔ¼öÀÇ ÇÙ½ÉÀº "ÇØ½ÃÄڵ尡 ¹®ÀÚ¿ÀÇ ¼ø¼¿Í ÀÏÄ¡ÇÑ´Ù"¶ó´Â °ÍÀÌÁÒ?
Ãß°¡:
¾Æ ¿©ÀüÈ÷ Àß ¸ð¸£°Ú½À´Ï´Ù... À§ÀÇ Áú¹®Àº ÀüÀûÀ¸·Î compare()¸¸ º¸°í ÇÑ À̾߱âÀ̱¸¿ä... ( ±×·¸Áö ¾Ê´Ù¸é compare()ÀÇ ·ÎÁ÷ÀÌ ÀÌ»óÇÑ °ÍÀÏÅ״ϱî¿ä..)
¿ÞÂÊÀ¸·Î °è¼Ó 5 ºñÆ®¾¿ ½ÃÇÁÆ®ÇÏ´Ùº¸¸é ÇÑ ¹ÙÄû µ¹ °æ¿ì°¡ »ý±æÅÙµ¥ ¾Æ¸®¼Û... |
|
| À§·Î |
|
 |
Gamza

°¡ÀÔ: 2001³â 10¿ù 11ÀÏ ¿Ã¸° ±Û: 610
|
|
¿Ã·ÁÁü: 2002-12-23 09:45
|
|
ÇØ½ÃÄÚµå ¼ø¼¿Í ¹®ÀÚ¿ ¼ø¼´Â ¿¬°ü¼º¾ø½À´Ï´Ù.
¹®ÀÚ¿ °Ë»ö½Ã °°Àº ÇØ½Ã Äڵ带 °®´Â ¹®ÀÚ¿³¢¸®¸¸ ¹®ÀÚ¿ ºñ±³¸¦ »ç¿ëÇÏÀÚ´Â°Ô ÇØ½ÃÄÚµåÀÇ ¸ñÀûÀÌÁÒ.
(ÇØ½ÃÄÚµå·Î ¹®ÀÚ¿À» Àϴܺзù......¿ìÆí¹øÈ£ °°Àº......)
¹®ÀÚ¿ Á¤·ÄÀÌ ÇÊ¿äÇÏ´Ù¸é Hashed stringÀ» »ç¿ëÇÏ¸é °ï¶õ.
binary_find ¿ª½Ã ¹®ÀÚ¿ °Ë»ö½Ã STLÀ» »ç¿ëÇÒ°æ¿ì ÃÖ¼Ò 2ȸÀÇ ¹®ÀÚ¿
ºñ±³¸¦ ÇØ¾ßÇÏ´Â ¹®Á¦¸¦ ÇØ°áÇÏ·Á´Â ÀϰüµÈ ¸ñÀûÇÏ¿¡ »ý°Ü³ °Ì´Ï´Ù. _________________ HOME: http://www.Gamza.net |
|
| À§·Î |
|
 |
·ù±¤

°¡ÀÔ: 2001³â 7¿ù 25ÀÏ ¿Ã¸° ±Û: 3413 ¼Ò¼Ó: GPGstudy
Ÿ »çÀÌÆ® ID(?): docbook.kr::·ù±¤
|
|
¿Ã·ÁÁü: 2002-12-24 16:04
|
|
±×·¡µµ.. ±×·¡µµ...
ÇØ½ÃÄڵ尡 °°Àº ¿ø¼ÒµéÀº ¹®ÀÚ¿ ¼ø¼·Î µé¾î ÀÖ¾î¾ß ÇÏÁö ¾Ê³ª¿ä????(binary_find °ü·ÃÇØ¼¿ä)
¸Â´Ù°í ÇØÁÖ¼¼¿ä¤Ð.¤Ð
Ãß°¡: ¿ø¼ÒµéÀ» Á¤·ÄÇÒ ¶§ ¹Ýµå½Ã binary_find¿¡ »ç¿ëÇÏ´Â ºñ±³ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù´Â ÀüÁ¦Á¶°ÇÀÌ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇØ Áֽñæ! |
|
| À§·Î |
|
 |
Gamza

°¡ÀÔ: 2001³â 10¿ù 11ÀÏ ¿Ã¸° ±Û: 610
|
|
¿Ã·ÁÁü: 2002-12-24 16:58
|
|
¸Â½À´Ï´Ù....^^
binary_find¸¦ »ç¿ëÇÏ·Á¸é compare¸¦ °¡Áö°í Á¤·ÄÀ» ÇØ¾ßÇÏÁÒ
ÇØ½ÃÄڵ尡 °°Àº ³Ñ³¢¸® Á¤·ÄµÇ¾î µé¾î°¡´Â°Ç compare°¡ ±×·¸°Ô µÇ¾îÀֱ⠶§¹®¿¡ ÀÚ¿¬È÷ ±×·¸°Ô µé¾î°¨..
¸»¾¸µå¸®·Á°í Çß´ø°Ç 'ÇØ½ÃÄڵ尡 ¹®ÀÚ¿ÀÇ ¼ø¼¿Í ÀÏÄ¡ÇÏÁö´Â ¾Ê´Â´Ù.' ´Â°Í. _________________ HOME: http://www.Gamza.net |
|
| À§·Î |
|
 |
¼Õ´Ô ¼Õ´Ô
|
°¨ÀÚ´Ô... |
¿Ã·ÁÁü: 2003-01-07 17:17
|
|
< ¿¬»êÀÚ¸¦ ÀçÁ¤ÀÇ ÇѰÍÀº... ¾ò¾îÁø
ÇØ½¬°ªÀÌ strcmp¿¡¼ ¸®ÅϵǴÂ... -1, 0, 1ÀÇ...
±×·¯´Ï±î.. Å©±â(¹®ÀÚ¿»óÀÇ...À½.. ½ºÆç¸µÀ¸·Î ÀÎÇÑ Å©´À³Ä ÀÛ´À³Ä..¹«½¼¶æÀÎÁö..
¾Æ½Ã°ÚÁ®?? ^^)¸¦ º¸ÀåÇÑ´Ù´Â ¶æÀΰ¡¿ä?
ÇØ½¬°ªÀ» °¡Áö°í Å©±â°Ë»ç¸¦ Çϸé strcmpÀÇ ¸¸¾à ÀÛ´Ù¸é -1ÀÌ ¿À´Â ¶È°°Àº
±¸ÇöÀ» ÇÒ¼öÀÖ´ÂÁö.... º¸Åë ¹®ÀÚ¿¼ÒÆ®ÇÒ¶§ ¾²ÀÌ´Â...
±×°ÍÀÌ º¸ÀåµÇ´ÂÁö¿ä? |
|
| À§·Î |
|
 |
zelong ¼Õ´Ô
|
½ºÆ®¸µ ºñ±³¼Óµµ |
¿Ã·ÁÁü: 2003-01-07 18:00
|
|
À½, ÀúÈñ °ÔÀÓ¿¡¼µµ ¸®¼Ò½º°ü¸®¸¦ ÇÒ ¶§ ¹®ÀÚ¿ÀÌ³Ä ID³Ä ¶ó´Â ¹®Á¦¿¡ ºÀÂøÇÑ ÀûÀÌ Àִµ¥, °á·ÐÀº ¹®ÀÚ¿À̾ú½À´Ï´Ù.
´ç½Ã Å×½ºÆ®¸¦ ÇÑ °á°ú
AMD Athlon XP 1700+ Á¤µµÀÇ ÄÄÇ»ÅÍ¿¡¼
Æò±Õ¹®ÀÚ¿Àç°Ë»ç ȸ¼ö°¡ 10.446746 ¹øÀ̶ó°í Çϸé
ÇÑ ¹øÀÇ °Ë»ç¿¡ °É¸®´Â Æò±Õ½Ã°£ÀÌ 0.000011ÃÊ ·Î ³ª¿À´õ±º¿ä.
»ç½Ç Àú ¼ö°¡ ³Ê¹« À۾Ƽ -°Ô´Ù°¡ Æò±ÕÄ¡À̰í- ¿ÀÈ÷·Á Àú°Íº¸´Ù
ºü¸£¸®¶ó´Â »ý°¢µµ °¡´ÉÇÏ°Ô Çß½À´Ï´Ù. Âü°í·Î 1¹ø°Ë»çºÎÅÍ 10¹ø°Ë»ç
¸ðµÎ Àú ºñ½ÁÇÑ ¼ýÀÚ°¡ ³ª¿À´Â °É·Î ºÁ¼ ½ÇÁ¦ ºÎÇϺ¸´Ù´Â ´Ù¸¥ ºÎÇϰ¡
³¢ÀÎ ½Ã°£ÀÌ ¾Æ´Ñ°¡ »ý°¢µÇ´õ±º¿ä.
¹°·Ð 0.000011 À̶ó´Â ¼ýÀÚµµ ¾Æ±î¿ì¸®¸¸Ä¡ ¾öû³ DB¸¦ ÀÚ¶ûÇÏ´Â
°ÔÀÓÀ̶ó¸é-_-; ÇÒ ¸» ¾ø½À´Ï´Ù¸¸. (±× ¶§´Â Á¤¸»·Î DB¸¦ ¾²µçÁö ¼³°èÇØ¾ß...)
°¨ÀÚ ´Ô²²¼ ¿Ã·ÁÁÖ½Å ÇØ½¬... ±×·¯´Ï±î std::map Á¤µµ¸¸ ½áµµ ÃæºÐÈ÷ ºü¸£¸®¶ó
»ý°¢µÇ³×¿ä. (¿ö³« ¸Ó½Å½ºÇǵ尡 ¿Ã¶ó°¡³ö¼...)
..À½-_-; Å×½ºÆ®°¡ À߸ø µÇ¾úÀ»Áöµµ ¸ð¸£Áö¸¸... ¾î·µç ºü¸¨´Ï´Ù. |
|
| À§·Î |
|
 |
opaque ¼Õ´Ô
|
±×·¡µµ.. ^^ |
¿Ã·ÁÁü: 2003-01-07 18:58
|
|
Àú´Â Á¶±Ý °í»ýÇØ¼¶óµµ °¡´ÉÇÏ¸é ¹è¿ index·Î Á¢±ÙÇÒ ¼ö ÀÖ´Â Äڵ带 ¸¸µå´Â°Ô ÁÁ´Ù°í »ý°¢ÇÕ´Ï´Ù.
1. hash table °ü·Ã function È£Ãâ overhead (¿©·¯ ÇÔ¼ö°¡ È£ÃâµÇ°ÚÁÒ)
2. bucket collision ó¸® (eg> 2Â÷ hash, binary search, linear search)
ÈåÈå.. ¼Óµµ Â÷°¡ 1000¹èÂë ³ªÁö ¾ÊÀ»±î¿ä? |
|
| À§·Î |
|
 |
Gamza

°¡ÀÔ: 2001³â 10¿ù 11ÀÏ ¿Ã¸° ±Û: 610
|
¹®ÀÚ¿ºñ±³ ¼Óµµ¹®Á¦ |
¿Ã·ÁÁü: 2003-01-08 06:24
|
|
Àü¿¡ ¸»¾¸µå·ÈµíÀÌ
¼ýÀÚID¾²±âÀü¿¡ ÇØ½¬¸¦ Çѹø »ý°¢ÇØ º¸ÀÚ....
¶ó´ÂÁ¤µµ·Î¸¸ »ý°¢ÇØ ÁÖ¼¼¿ä.
¹®ÀÚ¿·Î ½ÇÄÆÂ¥³õ±¸¼± ÇÁ·ÎÆÄÀϸµÇغôõ´Ï °É¸®´õ¶ó...
ÀÌ·²¶§µµ °£´ÜÈ÷ Àû¿ëÇÒ¼ö ÀÖÀ¸´Ï...
ÇÁ·ÎÆÄÀÏ·¯ µ¹·Áº¸°í ¹®ÀÚ¿ºñ±³°¡ ¹®Á¦°¡ ¾ø´Ù ÆÇ´ÜµÇ¸é ±×³É ¹®ÀÚ¿ ºñ±³ÇÏ¸é ±×¸¸ÀÔ´Ï´Ù.
PS. PC°¡ ¾Æ´Ñ ÀÓº£µðµå ½Ã½ºÅÛ¿¡¼´Â °¡´ÉÇÏ¸é ¼ýÀÚID¸¦ ½á¾ß °ÚÁö¸¸...
°æ¿ì¿¡ µû¶ó ±×·¸Áö ¸øÇѰæ¿ìµµ ÀÖ½À´Ï´Ù. ÀÌ·²¶§µµ À¯¿ëÇϰÚÁÒ.
(À§¿¡ ¸»¾¸µå¸° ÆÄÀϽýºÅÛ ±¸¼ºÀÌ¶ó´ø°¡...) _________________ HOME: http://www.Gamza.net |
|
| À§·Î |
|
 |
zelong ¼Õ´Ô
|
¼±Åà |
¿Ã·ÁÁü: 2003-01-08 11:11
|
|
µè°íº¸´Ï, PC°¡ ¾Æ´Ñ ½Ã½ºÅÛ¿¡¼´Â ¾à°£ ºÒÆíÇÒÁö¶óµµ ºÐ¸í À¯¿ëÇϰڳ׿ä. ±â°è¼º´ÉÀÌ ¿ö³« ¶³¾îÁúÅ×´Ï ÄÚµå ÀÚüÀÇ µ¢Ä¡µµ Å©Áö ¾ÊÀ»Å×°í, µ¥ÀÌŸÀÇ È帧µµ ÈξÀ ´Ü¼ø¸íÈ®ÇÒÅ×°í ¸»ÀÔ´Ï´Ù. ±×·¯ÇÏ´Ù¸é ¼ýÀÚŽ»öÀº ¾µ¸¸ÇÑ °Í °°½À´Ï´Ù.
ÆÄÀÏ ½Ã½ºÅÛ ¸»Àä. »ç½Ç ¾öû³ª°Ô ´Ã¾î³¯ ¿Â¶óÀΰÔÀÓ ¸®¼Ò½ºÆÄÀϵéÀÇ °³¼ö¸¦ °¨¾ÈÇØ¼ ÆÄÀϽýºÅÛ ÀÚü¸¦ ±×·ìȽÃÄ×´õ´Ï ¸¹¾Æ¾ß 300-400°³ÀÇ ¸®½ºÆ®¸¦ Ž»öÇÏ°Ô µÇ´õ±º¿ä. ±×·ìÀÇ Å½»ö¼Óµµ´Â ±×·ì¼ö ÀÚü°¡ ¸¹Áö ¾Ê¾Æ °ÅÀÇ ½Ã°£ÀÌ µéÁö ¾Ê°í, ¸¹¾Æ¾ß 300-400°³ÀÎ ¸®½ºÆ®¿¡¼ ÀÌÁøÅ½»ö¿¡´Â 6-7ȸ, ÇØ½¬·Î ¸¸µé¸é ±×°ÍÁ¶Â÷µµ °ÅÀÇ ÁÙ¿©¹ö¸®´Ï... (½Ç¼ö·Î ÇÁ·Î±×·¡¸Ó°¡ ±×·ìÀ» ³Ê¹« ¸¹ÀÌ Àд °É ¹æÁöÇϱâ À§ÇØ Managed ¸ðµåµµ-_-
¿©Æ°, ½ºÆ®¸µ Ž»ö ÁÁ½Ê´Ï´Ù >.<;
¼ýÀÚ±â¹Ý Ž»öµµ ¸Úµé¾îÁø ½Ã½ºÅÛÀÌ Á¸ÀçÇÏ¸é ±×°Íµµ ¸ÚÀÖÀ»µí; (ÇÏÁö¸¸ ½±Áö ¾Ê...) |
|
| À§·Î |
|
 |
|