dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

STL iipatniibas !?

 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
Hobits
Indago organizātors


Joined: 04 Jul 2003
Posts: 491
Location: Riga

PostPosted: 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... Wink
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 Smile.
Starp citu es izmantoju stlport nevis originaalo vc6 biblioteeku.
Back to top
View user's profile Send e-mail Visit poster's website
nekas
Guest





PostPosted: 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

PostPosted: Thu Aug 26, 2004 2:53 pm    Post subject: Re: STL iipatniibas !?

Eh, no manis programmeetaajs kaa no eezelja kosmonauts :?

Code:
m[4] = param;


Interesanti veel kaa sajaa gadiijumaa tiek rezerveeta atminja...?
Back to top
View user's profile Send e-mail Visit poster's website
Janus



Joined: 01 Dec 2003
Posts: 7

PostPosted: Sun Aug 29, 2004 4:51 am    Post subject: Re: STL iipatniibas !?

Hobits wrote:

Code:
m[4] = param;

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
View user's profile
Hobits
Indago organizātors


Joined: 04 Jul 2003
Posts: 491
Location: Riga

PostPosted: 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
View user's profile Send e-mail Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
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