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í
×
    včera 18:33 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 156 (pdf).

    Ladislav Hagara | Komentářů: 0
    včera 15:11 | Nová verze

    Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 25.8.1. Přehled novinek v Changelogu.

    Ladislav Hagara | Komentářů: 0
    včera 12:11 | IT novinky

    Včera večer měl na YouTube premiéru dokumentární film Python: The Documentary | An origin story.

    Ladislav Hagara | Komentářů: 0
    28.8. 23:33 | Nová verze

    Společnost comma.ai po třech letech od vydání verze 0.9 vydala novou verzi 0.10 open source pokročilého asistenčního systému pro řidiče openpilot (Wikipedie). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 0
    28.8. 21:55 | Nová verze Ladislav Hagara | Komentářů: 2
    28.8. 14:11 | IT novinky

    Řada vestavěných počítačových desek a vývojových platforem NVIDIA Jetson se rozrostla o NVIDIA Jetson Thor. Ve srovnání se svým předchůdcem NVIDIA Jetson Orin nabízí 7,5krát vyšší výpočetní výkon umělé inteligence a 3,5krát vyšší energetickou účinnost. Softwarový stack NVIDIA JetPack 7 je založen na Ubuntu 24.04 LTS.

    Ladislav Hagara | Komentářů: 4
    28.8. 00:44 | Bezpečnostní upozornění

    Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) spolu s NSA a dalšími americkými úřady upozorňuje (en) na čínského aktéra Salt Typhoon, který kompromituje sítě po celém světě.

    Ladislav Hagara | Komentářů: 26
    27.8. 16:33 | IT novinky

    Společnost Framework Computer představila (YouTube) nový výkonnější Framework Laptop 16. Rozhodnou se lze například pro procesor Ryzen AI 9 HX 370 a grafickou kartu NVIDIA GeForce RTX 5070.

    Ladislav Hagara | Komentářů: 1
    27.8. 14:22 | IT novinky

    Google oznamuje, že na „certifikovaných“ zařízeních s Androidem omezí instalaci aplikací (včetně „sideloadingu“) tak, že bude vyžadovat, aby aplikace byly podepsány centrálně registrovanými vývojáři s ověřenou identitou. Tato politika bude implementována během roku 2026 ve vybraných zemích (jihovýchodní Asie, Brazílie) a od roku 2027 celosvětově.

    Fluttershy, yay! | Komentářů: 10
    27.8. 13:11 | Nová verze

    Byla vydána nová verze 21.1.0, tj. první stabilní verze z nové řady 21.1.x, překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, LLD, Extra Clang Tools a Libc++.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (79%)
     (8%)
     (3%)
     (4%)
     (5%)
     (1%)
    Celkem 106 hlasů
     Komentářů: 9, poslední 28.8. 11:53
    Rozcestník

    Dotaz: Serazeni C++ map podle hodnoty

    13.3.2012 20:14 Karel Machyna
    Serazeni C++ map podle hodnoty
    Přečteno: 605×
    Zdravim, mam v C++ nasledujici mapu:
    map< string,vector< int > > mymap;
    
    Pokud ji pres iterator takto projdu a vypisu:
            for (it=mymap.begin(); it != mymap.end(); it++)
            {
                cout << (*it).first << " => ";
                vector< int > v = (*it).second;
                for (it2=v.begin(); it2 < v.end(); it2++)
                    cout << " " << *it; 
                cout << endl;
            }  
    
    Tak mi ji to vypise serazenou abecedne podle tech retezcu v klici. Ja bych tu mapu potreboval projit sestupne podle velikosti vektoru (kde velikosti vektory myslim pocet prvku v tomto vektoru), tedy vzhledem k predchazejicimu kodu sestupne serazenou podle (*it).second.size(). Jak toho prosim mohu co nejjednoduseji dosahnout?

    Odpovědi

    13.3.2012 20:57 ludo
    Rozbalit Rozbalit vše Re: Serazeni C++ map podle hodnoty
    zadefinuj porovnavaci functor, treba:
    struct mycompare {
        typedef pair< string, vector< int> > mypair;
        
        bool operator()(const mypair& x, const mypair& y) {
            return x.second.size() < y.second.size();
        }
    };
    

    jsou i dalsi moznosti, jako boost::bind, nebo pripadne lambda funkce v novym standarde (ale tam v tom prehled moc nemam)

    14.3.2012 09:49 Karel Machyna
    Rozbalit Rozbalit vše Re: Serazeni C++ map podle hodnoty
    Ano, ten functor vypada, ze to je presne co potrebuji. S temito prostredky C++, ale nemam moc zkusenosti, muzete prosim k tomu Vasemu kodu jeste uvest, jakym stylem tu strukturu mycompare pouziju, abych tu moji mapu prosel v pozadovanem poradi?
    14.3.2012 12:30 ludo
    Rozbalit Rozbalit vše Re: Serazeni C++ map podle hodnoty
    Tak to ze to chces v tom poradi jenom projit, jsem si nevsiml. Kdyby jsi tu mapu chtel mit od zacatku setridenou podle velikosti tech vektoru tak ji staci zadeklarovat jako
    typedef map< string,vector< int>,mycompare> mymap;
    
    Kdyz ji potrebujes raz setridenou podle stringu a jindy podle velikosti vektoru tak bych asi pouzil tu multimapu, jak je navrhnuto v dalsim komentari. Jestli je to jenom kvuli jednomu vypisu, tak bych zvazil zkopirovani prvu do vektoru a pak sort (kde by taky byl jako parametr ten porovnavaci objekt...
    14.3.2012 10:24 me vakérav
    Rozbalit Rozbalit vše Re: Serazeni C++ map podle hodnoty
    Pokud to v tom pořadí chceš procházet častěji, můžeš to podle toho řadit přímo: struktura multimap, kde klíčem je délka toho vektoru a string+vektor samotný vrznout do nějaké obalovací struktury. Pak už vybíráš stejně jako u jiných kontejnerů.
    16.3.2012 13:49 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Serazeni C++ map podle hodnoty
    s tou multimapou by byl problem kdyz se nektery z tech vektoru zmeni - potom bys tu polozku musel vyjmout a zase vlozit aby to bylo spravne serazeny...

    zalezi jaky vsechny operace s tim budes delat a jak casto, ale pokud to neni neco hodne specifickyho tak nejjednodussi a asi i nejrychlejsi bude vytvorit:

    vector<vector<int> *>

    do nej zkopirovat ukazatele na ty puvodni vektory a seradit to pomoci sort()

    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.