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 04:00 | Nová verze

    raylib (Wikipedie), tj. multiplatformní open-source knihovna pro vývoj grafických aplikací a her, byla vydána ve verzi 6.0.

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

    Nové verze AI modelů. Společnost OpenAI představila GPT‑5.5. Společnost DeepSeek představila DeepSeek V4.

    Ladislav Hagara | Komentářů: 0
    včera 15:33 | Zajímavý článek

    Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 164 (pdf) a Hello World 29 (pdf).

    Ladislav Hagara | Komentářů: 0
    včera 04:44 | Komunita

    Bylo oznámeno, že webový prohlížeč Opera GX zaměřený na hráče počítačových her je už také na Flathubu and Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    23.4. 23:11 | IT novinky

    Akcionáři americké mediální společnosti Warner Bros. Discovery dnes schválili převzetí firmy konkurentem Paramount Skydance za zhruba 110 miliard dolarů (téměř 2,3 bilionu Kč). Firmy se na spojení dohodly v únoru. O část společnosti Warner Bros. Discovery dříve usilovala rovněž streamovací platforma Netflix, se svou nabídkou však neuspěla. Transakci ještě budou schvalovat regulační orgány, a to nejen ve Spojených státech, ale také

    … více »
    Ladislav Hagara | Komentářů: 0
    23.4. 22:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 26.04 LTS Resolute Raccoon. Přehled novinek v poznámkách k vydání. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 11. vydání s dlouhodobou podporou (LTS).

    Ladislav Hagara | Komentářů: 2
    23.4. 11:55 | Nová verze

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Gitea (Wikipedie) byla vydána v nové verzi 1.26.0. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    23.4. 04:44 | Pozvánky

    Ve středu 29. dubna 2026 se v pražské kanceláři SUSE v Karlíně uskuteční 7. Mobile Linux Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj i uživatelský prostor. Akce proběhne od 10:00 do večerních hodin. Hackday je určen všem zájemcům o praktickou práci s Linuxem na telefonech. Zaměří se na vývoj aplikací v userspace, například bankovní aplikace, zpracování obrazu z kamery nebo práci s NFC, i na úpravy

    … více »
    lkocman | Komentářů: 1
    22.4. 21:55 | Nová verze

    LilyPond (Wikipedie) , tj. multiplatformní svobodný software určený pro sazbu notových zápisů, byl vydán ve verzi 2.26.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    22.4. 20:33 | Nová verze

    Byla vydána nová verze 11.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 237 vývojářů. Provedeno bylo více než 2 500 commitů. Přehled úprav a nových vlastností v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (2%)
     (13%)
     (31%)
     (3%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 1411 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Dotaz: C++ ranges::views a indexy položiek

    hermes avatar 18.8.2021 10:48 hermes | skóre: 7 | blog: Elektro | BA
    C++ ranges::views a indexy položiek
    Přečteno: 362×
    Ahojte podedil som view_facade a napísal som si objekt na, ktorý sa dajú aplikovať view adaptéry z STL pre C++ 20x ako:
    ranges::views::filter
    ranges::views::transform
    ranges::views::accumulate
    ...a ďalšie.
    Problém je, že tie adaptéry neobsahujú index, iba samotnú položku (napríklad v predikáte funkcie filter nemám aj index položky). a mne by sa ten index občas hodil.

    V JS pri operáciách ako map, filter, forEach, reduce vieme zistiť aj index položky, tak že funkcii pridáme ďalší parameter:
    [1, 2].map((elem, index) => ({ elem, index })).forEach(console.log); // vypise { elem: 1, index: 0 } a { elem: 2, index: 1 }
    niektoré viac strong typed funkcionálne jazyky, kde sa nedá len tak pridávať, alebo vynechať parameter, zase majú špeciálnu variantu funkcií map, iter (mapi, iteri)
    [1, 2]
    |> Seq.mapi(fun index elem -> $"Index: {index}, Element: {elem}")
    |> Seq.iter(printfn "%s")
    Pri C++ ranges::views, ak by som chcel mať k dispozícii aj index, by som musel napísať špeciálne adaptéry, podporujúce aj index položky. Ako tento problém riešiť, tak aby som to nemusel takto komplikovať? V zdrojovom objekte tie indexy mám, keďže počas iterovania sa tam updatuje počítadlo, ale ako ten index vložiť do tých funkcií?

    Urobiť si wrapper pre objekt, ktorý overloadne operátor "->" a operátor implicitnéj konverzie a tam nejako pridať aj index? Alebo ako to vyriešiť čo najjednoduchšie, aby som mal voliteľne k dispozícii aj index?

    Odpovědi

    MakeIranBombedAgain❗ avatar 18.8.2021 11:47 MakeIranBombedAgain❗ | skóre: 42 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: C++ ranges::views a indexy položiek

    co jakoby takle jednoduše hele to foreach třeba :O :O

    
    std::vector<thisObject> storedValues;
    for (size_t idx = 0; auto value : storedValues) {
      std::cout << idx << ": " << value << '\n';
      ++idx;
    }
    
    
    hermes avatar 18.8.2021 14:26 hermes | skóre: 7 | blog: Elektro | BA
    Rozbalit Rozbalit vše Re: C++ ranges::views a indexy položiek
    Ahoj dík za odpoveď, možno som sa nevyjadril zrozumiteľne, skúsim tú otázku večer preformulovať a pridám aj príklady, aby bolo jasnejšie o čo mi ide.
    18.8.2021 22:16 Jan Trávníček | skóre: 10 | blog: ehonza | Existuje
    Rozbalit Rozbalit vše Re: C++ ranges::views a indexy položiek

    Jestli pomocí ranges tak takhle:

    #include <vector> #include <string> #include <ranges> #include <algorithm> #include <iostream> int main ( ) { using namespace std::string_literals; std::vector < std::string > data ( { "abc"s, "def"s, "ghi"s } ); for ( const std::pair < int, const std::string & > & elem : data | std::ranges::views::transform ( [ index = 0 ] ( const std::string & elem ) mutable { return std::make_pair ( index ++, std::ref ( elem ) ); } ) ) { std::cout << elem.first << " " << elem.second << std::endl; } return 0; }

     

    
    

    Jen pozor na vyhodnocování ranges, hodnota může přes transform projít i víckrát v závislosti co následuje...

    To mess up a Linux box, you need to work at it; to mess up your Windows box, you just have to work on it.
    hermes avatar 19.8.2021 22:27 hermes | skóre: 7 | blog: Elektro | BA
    Rozbalit Rozbalit vše Re: C++ ranges::views a indexy položiek
    Ahoj, ďakujem, hej s tým aj počítam , robím si jednoduchú minimalistickú objektovú embedded databázu pre ESP32 (resp pre všetky platformy) a namiesto SQL tam budem robiť dotazy cez tieto adaptéry podobne to to rieši aj db4o v .NET cez LINQ... a mám tam aj normálne Idčka, ale jednoduchšie by bolo niektoré operácie riešiť cez indexy a hlavne chcem aby to podporovalo aj objekty ktoré nebudú mať IDčka. Toto je tiež riešenie, napadlo to aj mňa, ale pre užívateľa by som to chcel spraviť nejko deklaratívnejšie. Asi si nakoniec napíšem vlastné adaptéry. Minimálne pre trasform a filter. Ale teraz bojujem s vážnejším problémom. Idem asi na github a pogooglim a pohľadám iné objekty dediace view_facade.

    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.