abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 15:00 | IT novinky

    Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.

    Ladislav Hagara | Komentářů: 0
    včera 21:22 | Nová verze

    Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 18:22 | IT novinky

    T-Mobile od 15. září zpřístupňuje RCS (Rich Communication Services) zprávy i pro iPhone.

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | IT novinky

    Společnost ARM představila platformu Arm Lumex s Arm C1 CPU Cluster a Arm Mali G1-Ultra GPU pro vlajkové chytré telefony a počítače nové generace.

    Ladislav Hagara | Komentářů: 0
    včera 05:44 | Nová verze

    Unicode Consortium, nezisková organizace koordinující rozvoj standardu Unicode, oznámila vydání Unicode 17.0. Přidáno bylo 4 803 nových znaků. Celkově jich je 159 801. Přibylo 7 nových Emoji.

    Ladislav Hagara | Komentářů: 0
    9.9. 21:00 | IT novinky Ladislav Hagara | Komentářů: 14
    9.9. 18:33 | Nová verze

    Realtimová strategie Warzone 2100 (Wikipedie) byla vydána ve verzi 4.6.0. Podrobný přehled novinek, změn a oprav v ChangeLogu na GitHubu. Nejnovější verzi Warzone 2100 lze již instalovat také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 1
    9.9. 12:22 | IT novinky

    Polské vývojářské studio CD Projekt Red publikovalo na Printables.com 3D modely z počítačové hry Cyberpunk 2077.

    Ladislav Hagara | Komentářů: 1
    9.9. 11:44 | Pozvánky

    Organizátoři konference LinuxDays 2025 vydali program a zároveň otevřeli registrace. Akce se uskuteční 4. a 5. října na FIT ČVUT v pražských Dejvicích, kde vás čekají přednášky, workshopy, stánky a spousta šikovných lidí. Vstup na akci je zdarma.

    Petr Krčmář | Komentářů: 7
    8.9. 22:00 | IT novinky

    Uživatelé komunikátoru Signal si mohou svá data přímo v Signalu bezpečně zálohovat a v případě rozbití nebo ztráty telefonu následně na novém telefonu obnovit. Zálohování posledních 45 dnů je zdarma. Nad 45 dnů je zpoplatněno částkou 1,99 dolaru měsíčně.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (83%)
     (7%)
     (2%)
     (2%)
     (4%)
     (2%)
    Celkem 163 hlasů
     Komentářů: 12, poslední včera 13:00
    Rozcestník

    Dotaz: Konverze iterátorů

    27.4.2009 19:22 Andrej | skóre: 51 | blog: Republic of Mordor
    Konverze iterátorů
    Přečteno: 263×

    Ahoj, dnes jsem narazil na cosi zvláštního. Změnil jsem typ STL kontejneru a nepoužil jsem refactoring. Eclipse tedy přeložil projekt s původními deklaracemi iterátorů a s novým typem kontejneru. Kupodivu bylo možné (aspoň z pohledu překladače a v době překladu) přiřadit nekompatibilní iterátory.

    Deklarace kontejneru:

        const std::map< uint32_t, Hook * > hooks; 

    Tohle se nepřeloží a důkladně to zařve, což jistě nikoho nepřekvapí:

        const std::vector< Hook * >::const_iterator end = hooks.end();
    

    Jenže (a teď to přijde!) tohle se mi přeloží:

        const std::vector< Hook * >::const_reverse_iterator end = hooks.rend();
    

    Jak to? Proč? Kdyby konverze těch iterátorů dávala smysl (iterace přes klíče...?), byl by na to konverzní operátor a bylo by to v dokumentaci. (Navíc by to fungovalo v obou směrech.) Jenže pokud vím, není tomu tak. Ještě doplním, že používám kompilátor Intel.

    Tohle je buď záhada, nebo další tajemné zákoutí C++, které ještě neznám. Je snad mezi „normálními“ a „převrácenými“ iterátory nějaký podstatný rozdíl?

    Odpovědi

    Voty avatar 28.4.2009 08:53 Voty | skóre: 12 | blog: gemini
    Rozbalit Rozbalit vše Re: Konverze iterátorů

    Zajímavé, zajímavé. gcc to vezme také, a dokonce je spokojený i s tímhle :(

        const std::map< std::string, std::string > hooks;
        const std::vector< int ** >::const_reverse_iterator end = hooks.rend();

     

    Jednu rozbil a tu druhou ztratil.
    28.4.2009 14:20 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: Konverze iterátorů

    Jak vypada vas zdrojak? Jak ho kompilujete? Mne to g++ (verze 3.3, 4.[0-3]) nesezere.

    $ cat test.cc
    
    #include <vector>
    #include <stdint.h>
    #include <map>
    
    struct Hook
    {
            char data;
    };
    
    int main(int argc, char** argv)
    {
            const std::map<uint32_t, Hook*> hooks;
    
    //      const std::vector< Hook * >::const_iterator end_a = hooks.end();
            const std::vector< Hook * >::const_reverse_iterator end_b = hooks.rend();
    
            return 0;
    }
    
    $ g++ -o test test.cc
    /usr/include/c++/4.3/bits/stl_iterator.h: In constructor ‘std::reverse_iterator<_Iterator>::reverse_iterator(const std::reverse_iterator<_Iter>&) [with _Iter = std::_Rb_tree_const_iterator<std::pair<const unsigned int, Hook*> >, _Iterator = __gnu_cxx::__normal_iterator<Hook* const*, std::vector<Hook*, std::allocator<Hook*> > >]’:
    test.cc:16:   instantiated from here
    /usr/include/c++/4.3/bits/stl_iterator.h:139: error: no matching function for call to ‘__gnu_cxx::__normal_iterator<Hook* const*, std::vector<Hook*, std::allocator<Hook*> > >::__normal_iterator(std::_Rb_tree_const_iterator<std::pair<const unsigned int, Hook*> >)’
    /usr/include/c++/4.3/bits/stl_iterator.h:683: note: candidates are: __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator(const _Iterator&) [with _Iterator = Hook* const*, _Container = std::vector<Hook*, std::allocator<Hook*> >]
    /usr/include/c++/4.3/bits/stl_iterator.h:680: note:                 __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator() [with _Iterator = Hook* const*, _Container = std::vector<Hook*, std::allocator<Hook*> >]
    /usr/include/c++/4.3/bits/stl_iterator.h:666: note:                 __gnu_cxx::__normal_iterator<Hook* const*, std::vector<Hook*, std::allocator<Hook*> > >::__normal_iterator(const __gnu_cxx::__normal_iterator<Hook* const*, std::vector<Hook*, std::allocator<Hook*> > >&)

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.