|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
Hobits Indago organizātors
Joined: 04 Jul 2003 Posts: 491 Location: Riga
|
Posted: Thu Aug 26, 2004 2:03 pm Post subject: STL iipatniibas !? |
|
Nu tad beidzot arii mani ir piemekleejusi probleema, gan ne paaraak liela,bet tomeer...
Taatad situaacijas sekojosa:
Code: |
//man ir stl map struktuura kuraa es veelos ievietot veertiibas
typedef map<uint, int*> myMap;
myMap m;
//tiek pienemts ka katras veertiibas key ir unikaals
int param = 457;
uint key = 12;
//pirms ievietot veertiibu tiek meeginaats paarbaudiit vai
//taads ieraksts jau neeksistee...itkaa logiski, bet..
if(!m[key])
{
m.insert(myMap::value_type(key, ¶m));
}
//blah...ieraksts nau pievienots
cout<<m[key]<<endl;
//peec buutiibas sis fragments ir absoluuti bezjeedziigs
//jo stl automaatiski nepievieno jauno ierakstu ja taads key jau eksistee
//taatad paarbaude nau vajadziiga, bet vienalga ja es gribu ieguut elementu kurs veel neeksistee:
m[4]; //atgriez 0
//un kaut kad veelaak censos so elementu pievienot:
m.insert(myMap::value_type(4, ¶m));
//atkal nekas nesanaak
|
Aciimredzami es nepareizi izmantoju operatoru [], bet taadaa gadiijumaa kaa lai paarbauda vai elements jau eksistee? stl dokos neko jeedziigu neatradu,bet iespeejams atbilde ir elementaara .
Starp citu es izmantoju stlport nevis originaalo vc6 biblioteeku. |
|
Back to top |
|
|
nekas Guest
|
Posted: Thu Aug 26, 2004 2:49 pm Post subject: |
|
Vai tad nav jāraksta !(m[blablabla]) ? Man liekas, ka !m[blablabla] ir tas pats, kas !m . |
|
Back to top |
|
|
Hobits Indago organizātors
Joined: 04 Jul 2003 Posts: 491 Location: Riga
|
Posted: Thu Aug 26, 2004 2:53 pm Post subject: Re: STL iipatniibas !? |
|
Eh, no manis programmeetaajs kaa no eezelja kosmonauts :?
Interesanti veel kaa sajaa gadiijumaa tiek rezerveeta atminja...? |
|
Back to top |
|
|
Janus
Joined: 01 Dec 2003 Posts: 7
|
Posted: Sun Aug 29, 2004 4:51 am Post subject: Re: STL iipatniibas !? |
|
Hobits wrote: |
Interesanti veel kaa sajaa gadiijumaa tiek rezerveeta atminja...? |
Ja tu taisi "if (!m[13]) ...", tad, pat ja šāda itema nav, tas tiek izveidots un inicializēts ar defaulto vērtību (int-am - teorētiski neinicializēts, praktiski var gadīties 0).
Korekti pārbaudīt vai items mapā ir:
Code: |
if (m.find(13) == m.end())
cout << "NAV atrasts";
else
cout << "atradās";
|
Par atmiņu. Izdarot tukšam mapam m[13]=13; tev mapā būs viens elements (ne 13 :), un tas teorētiski arī būs mapa atmiņas patēriņš; praktiski maps var noallocēt vairāk atmiņas atvieglojot turpmāku elementu pievienošanu, bet tas ir atkarīgs no STL implementācijas. |
|
Back to top |
|
|
Hobits Indago organizātors
Joined: 04 Jul 2003 Posts: 491 Location: Riga
|
Posted: Sun Aug 29, 2004 8:25 am Post subject: Re: STL iipatniibas !? |
|
Nu taa kaa es mapaa glabaaju tikai pointerus tad if(!m[13]) straadaa jo atgriez 0 ja elements neeksistee un atminja paaraak netiek pie****ta jo elementu tipu (key) nau daudz. Bet vienalga thnx par ieteikumu, taa iteratoru metode noderees citos gadiijumos. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|