|
Тема |
Re: Запазване реда на хеш? [re: Dakota] |
|
Автор | edno momiche (Нерегистриран) | |
Публикувано | 10.04.02 10:21 |
|
|
hasha v perl ( ili t.nar. asociativen masiv) vsasnost ne e nepodreden. podredbata mu obache se opredelia vutreshno ot Perl, i tazi podredba se promenia dinamichno pri dobaviane/iztrivane na elementi (za optimizirane na dostupa). poiasniavam tova za vseki sluchai - ako na niakoi ne mu e iasno.
znachi za da napravish tova koeto iskash ti triabva malko po slojna struktura. bih ti predlojila da polzvash masiv ot hashes, kato indexa na masiva ti e rowcount. samo che podobna struktura e prekaleno neefektivna(hasha opravdava izpolzvaneto si kogato imash povechko ot 30tina elementa - pravih razni testove predi vreme, i ima opredelen prag pod koito izpolzvaneto na prosti masivi e za predpochitane - no togava nima da imash name-value dvoiki, a prosto masiv sas stoinost za 2 indexa v nego). taka che v tozi sluchai po-izgodno e da se polzva masiv ot masivi
ako obache polzvash 2 hasha vmesto 1 - :
1) id => value
2) id => sort_field
mojesh efektivno da si sortirash parvia hash on-the-fly vseki put po stoinostite na 2ria (ako ne se seshtash tochno kak, shte dam primer)
sashto taka mojesh napravo da propusnesh 2ria hash i da polzvash hash ot masivi, kato stoinostta na elementa v hasha ti vkluchva id-to, fielda-value i fielda-sort, no v tozi sluchai sortiraneto izglejda dosta nechetlivo zaradi dereference-vaneto na elementa na masiva ot stoinostta na elementa na hasha / huh tova prozvucha na zanzibarski :-)/
nai elegantnoto reshenie e obache da se polzva tie za da 'vurjesh' hasha s array. po tozi nachin podredbata shte se zapazva 'prozrachno'. znachi, ako ne te murzi - mojesh sam si napishesh implementacia, a ako te, ili ako ne si mnogo siguren kak tochno - mojesh da polzvash Hash::Ordered ()
sashto taka mojesh da polzvash i btree (ot DB_File) ili Tie::IxHash - vapros na vkus ( kazalo kucheto i si oblizato d-to)
az lichno haresvam modula na Abigail zashtoto e maluk i lek.
hope this helps,
.edno momiche
|
| |
|
|
|