Çë½Ì¹ØÓÚ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; ÊÇ·ñ¿ÉÒÔÕâÑù:
ÔÚclass csh_pzwjÖж¨ÒåÁ½¸öchar*(or string)³ÉÔ±±äÁ¿.ÓÃÒÔ´úÌæ
char *str_value, *str_name;
ÄãÔÚÎö¹¹º¯ÊýÖÐdeleteËüÃÇ.
·ñÔòdict²»»á°ïÄãÊͷŵÄ.
3ks
Ê×ÏÈл¹ý£¬µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÖ»ÄÜʹÓÃÖ¸ÕëÊý×éÀ´½â¾öÕâ¸öÎÊÌâÁË¡£µ«ºÃÏñ»¹ÊÇÓÐÎÊÌ⣬·¢ÉúÔÚhash_map¶ÔÏóÐÞ¸Äij¸öµ¥ÔªÊ±£¬ÎÒÆÚÍûÄÜͨ¹ýÖØÔØhash_mapÀ´ÊµÏÖ£¬¿Éϧ¹¦Á¦²»¹»:(£¬Ö»ºÃ×÷°Õ¡£ Ê×ÏÈ£¬ÄãµÄÁ½¸ö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£¬²»´ÖµÄ½â¾ö·½°¸¡£ ÔÚÎÒÒÔǰ°æ±¾µÄ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 CPUL а汾ÒѾ·¢²¼ÁË¡£
cpul.126.com to download it. :w
Ò³:
[1]