LinuxÒÁµéÔ°ÂÛ̳'s Archiver

richardlei ·¢±íÓÚ 2002-12-27 11:17

Çë½Ì¹ØÓÚhash_map¹ØÓÚÄÚ´æÊͷŵÄÎÊÌâ.

ÏÂÃæÊÇÎÒ³ÌÐòÖеÄÒ»¶Î´úÂë:
=======================================
#include <ext/hash_map>
namespace sgi = ::__gnu_cxx;

//×Öµä¶ÔÏóÖÐ×Ö·û´®±È½Ï·½·¨.
struct eqstr
{
        bool operator()(const char* s1, const char* s2) const
        {
                return (strcmp(s1, s2) == 0);
        }
};

//×Öµä¶ÔÏó¶¨Òå.
typedef sgi::hash_map<const char*, char*, sgi::hash<const char*>, eqstr> HASH_MAP;

//³õʼ»¯_ÅäÖÃÎļþ¶ÔÏó.
class csh_pzwj
{
        public:
                //¹¹Ô캯Êý.
                csh_pzwj();
                //Îö¹¹º¯Êý.
                ~csh_pzwj();
        private:
                //²ÎÊý×Öµä.
                HASH_MAP dict;
};
====================================================
//ÔÚʵÏÖ¸ÃÀàʱ,ÎÒÓÃÈçϵĴúÂëÀ´ÊµÏÖ¶Ô×Öµä¶ÔÏóÔö¼Ó³ÉÔ±,ÎÒ·¢ÏÖÁÙʱ±äÁ¿str_value,str_name²»ÄÜÓÃdeleteÊÍ·ÅÄÚ´æ.·ñÔò,Êý¾Ý½«¶ªÊ§.
//ÎÒµÄÎÊÌâÊÇ,µ±ÎÒÊÍ·ÅÕû¸öÀàʱ,dict¶ÔÏóÊÇ·ñÄܹ»°ïÎÒÒ»Æð½«´Ë´¦·ÖÅäµÄÄÚ´æ½øÐÐÊÍ·Å?Èç¹û²»ÄÜ,ÕâÖÖÎÊÌâ¸ÃÈçºÎ½â¾ö?Çë¸ßÊÖÖ¸µã,²»Ê¤¸Ð¼¤!

char *str_value, *str_name;

str_name = new char[10];
strncpy(str_name, "name");
str_name[4] = '\0';

str_value = new char[10];
strcpy(str_value, "value");
str_value[5] = '\0';

dict[str_name] = str_value;

//´Ë´¦delete»áµ¼ÖÂdict¶ªÊ§Êý¾Ý.
//delete str_value, str_name;

faraway ·¢±íÓÚ 2002-12-28 10:06

ÊÇ·ñ¿ÉÒÔÕâÑù:
ÔÚclass csh_pzwjÖж¨ÒåÁ½¸öchar*(or string)³ÉÔ±±äÁ¿.ÓÃÒÔ´úÌæ
char *str_value, *str_name;
ÄãÔÚÎö¹¹º¯ÊýÖÐdeleteËüÃÇ.

·ñÔòdict²»»á°ïÄãÊͷŵÄ.

richardlei ·¢±íÓÚ 2002-12-31 11:15

3ks

Ê×ÏÈл¹ý£¬µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÖ»ÄÜʹÓÃÖ¸ÕëÊý×éÀ´½â¾öÕâ¸öÎÊÌâÁË¡£µ«ºÃÏñ»¹ÊÇÓÐÎÊÌ⣬·¢ÉúÔÚhash_map¶ÔÏóÐÞ¸Äij¸öµ¥ÔªÊ±£¬ÎÒÆÚÍûÄÜͨ¹ýÖØÔØhash_mapÀ´ÊµÏÖ£¬¿Éϧ¹¦Á¦²»¹»:(£¬Ö»ºÃ×÷°Õ¡£

DarkSpy ·¢±íÓÚ 2003-1-3 11:53

Ê×ÏÈ£¬ÄãµÄÁ½¸öchar *ÊÇÔÚ¶ÑÖй¹ÔìµÄ£¬ÓÚÊÇ£¬ÔÚÄãoperator=µÄʱºò£¬hash_mapµÄkeyÒѾ­Ö¸ÏòÁ˶ÑÖеÄÄÇÁ½¸ö¸öchar * £¬ÔÚÄãdelete char * µÄͬʱ£¬hash_mapµÄoperator[] ×ÔȻָÏòÒ»¶ÑÎÞÓõÄÄڴ棬ÎÒÃÇ¿ÉÒÔÓÃvectorÀ´×ö¸öСÊÔÑé
[code]
char * test = new char[10];
strcpy(test, "oh");
vector<char *> vc;
vc[0] = test;
cout<<vc[0]<<endl;
delete [] test;
cout<<vc[0]<<endl;
[/code]

µ±vector<char *>::iterator vc Ö¸Ïò test µÄʱºò£¬Õâ¸ötestÊDZ»new¹¹ÔìµÄ£¬¶ødelete [] testµÄʱºò£¬vector<char *>::iterator vcÖ¸ÏòÁËÒ»¶ÑÒѾ­±»ÊͷŵÄÄڴ棬×ÔÈ»±»Ïú»ÙÁË¡£
ËùÒÔ×îºÃ²»ÒªÖ¸ÏòÓöѹ¹ÔìµÄ¶«Î÷£¬delete½«³öÂé·³¡£
µ£ÐÄÊÍ·ÅÎÊÌ⣿¿ÉÒÔʹÓà smart_ptr£¬²»´ÖµÄ½â¾ö·½°¸¡£

DarkSpy ·¢±íÓÚ 2003-1-7 08:59

ÔÚÎÒÒÔǰ°æ±¾µÄCPULÖУ¬Ò²´æÔÚ×ÅÖ¸Ïò¶Ñ±äÁ¿µÄÎÊÌ⣬µ±¶ÑÕ»±»releaseÖ®ºó£¬·ÖÅäµ½stackÈÝÆ÷ÄڵĶѱäÁ¿Ò²Ò»Ñù±»ÊÍ·Å£¬²»¹ý×îа汾µÄCPULÐÞÕýÁËÕâ¸öÎÊÌ⣬µÈ´ý×Åа汾CPULµÄ·¢²¼¡£:-D
ÏÖÔÚ£¬Äú¿ÉÒÔÕâÑùÓãº
[code]
#include "cpul_stack"
#include "cpul_string" //include strcpy and some else.
#include <iostream>

using namespace cpul;
using namespace std;

main()
{
char *ch[10];
stack<char *> pc; //stack ÈÝÆ÷
for(int i = 0; i<6; i ++)
        {
         ch[i] = new char[3];
          strcpy(ch[i], itoa(i, ch[i] , 10));
         pc.push_back(ch[i]); //²åÈëÒ»Ìõ
        }
for(int i = 0; i<6; i ++)
        {
         delete [] ch[i]; //½«¶ÑÕ»ÊÍ·Å
         cout<<pc[i]<<endl; //ͬÑùûÓÐÎÊÌâ
        }
}
[/code]

×îа汾 CPUL ½«¼ÓÈë shichao ͬ־µÄ linklist Àà¿â£¬ÆÚ´ýÕâ 2003 ÄêµÚÒ»¸ö°æ±¾ CPUL µÄ·¢²¼°É¡£:w

DarkSpy ·¢±íÓÚ 2003-1-9 17:51

CPUL а汾ÒѾ­·¢²¼ÁË¡£
cpul.126.com to download it. :w

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.