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

    Počítačová hra Tetris slaví 40 let. Alexej Pažitnov dokončil první hratelnou verzi 6. června 1984. Mezitím vznikla celá řada variant. Například Peklo nebo Nebe. Loni měl premiéru film Tetris.

    Ladislav Hagara | Komentářů: 8
    dnes 10:44 | Nová verze

    MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.23.0. V přehledu novinek je vypíchnuta podpora dynamických USB zařízení nebo nové moduly openamp, tls a vfs.

    Ladislav Hagara | Komentářů: 0
    dnes 10:22 | Nová verze

    Canonical vydal Ubuntu Core 24. Představení na YouTube. Nová verze Ubuntu Core vychází z Ubuntu 24.04 LTS a podporována bude 12 let. Ubuntu Core je určeno pro IoT (internet věcí) a vestavěné systémy.

    Ladislav Hagara | Komentářů: 1
    dnes 01:00 | Nová verze Ladislav Hagara | Komentářů: 0
    včera 19:55 | IT novinky

    Intel na veletrhu Computex 2024 představil (YouTube) mimo jiné procesory Lunar Lake a Xeon 6.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | IT novinky

    Na blogu Raspberry Pi byl představen Raspberry Pi AI Kit určený vlastníkům Raspberry Pi 5, kteří na něm chtějí experimentovat se světem neuronových sítí, umělé inteligence a strojového učení. Jedná se o spolupráci se společností Hailo. Cena AI Kitu je 70 dolarů.

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

    Byla vydána nová verze 14.1 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 12:55 | Zajímavý software

    Společnost Kaspersky vydala svůj bezplatný Virus Removal Tool (KVRT) také pro Linux.

    Ladislav Hagara | Komentářů: 11
    včera 12:33 | Nová verze

    Grafický editor dokumentů LyX, založený na TeXu, byl vydán ve verzi 2.4.0 shrnující změny za šest let vývoje. Novinky zahrnují podporu Unicode jako výchozí, export do ePub či DocBook 5 a velké množství vylepšení uživatelského rozhraní a prvků editoru samotného (např. rovnic, tabulek, citací).

    Fluttershy, yay! | Komentářů: 1
    včera 12:00 | Nová verze

    Byla vydána (𝕏) nová verze 7.0 LTS open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    C++ hate

    22.12.2022 10:39 | Přečteno: 1294× | Programování

    Trochu jsem se začal učit C++, koupil jsem si nějaké knížky, docela jsem pochopil raii, smart pointery atd., nicméně bych se chtěl zeptat, zda takhle opravdu vypadá správné a idiomatické C++:
     
    #include <iostream>
    #include <string>
    #include <vector>
    
    void read_lines(std::vector<std::string>& lines);
    void print_lines(const std::vector<std::string>& lines);
    
    int main()
    {
        std::vector<std::string> lines;
        
        read_lines(lines);
        print_lines(lines);
        
        return 0;
    }
    
    void read_lines(std::vector<std::string>& lines) {
        std::string line;
        
        while (getline(std::cin, line))
            lines.push_back(line);    
    }
    
    void print_lines(const std::vector<std::string>& lines) {
        std::cout << '\n';
        for (auto x : lines)
            std::cout << x << '\n';
        
    }
    
    Protože skoro ve všech knihách o C++ nepoužívají předponu std::, ale using namespace std, takže ten kód vypadá docela stravitelně, nicméně je doporučeno používat std:: prefix, ale potom ten kód vypadá opravdu superhnusně.

    Jak vy píšete C++?        

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    22.12.2022 10:57 jai masterrace
    Rozbalit Rozbalit vše Re: C++ hate
    nemas pouzivat using namespace std v header filech, v cpp klidne muzes pokud nemas zadne konflikty v nazvech metod a typu.

    a c/c++/rust je na hovno, nauc se jai
    22.12.2022 22:46 Nerdlang
    Rozbalit Rozbalit vše Re: C++ hate
    Já se učím Erlang ale asi se na to vyseru. Stejně mi to k ničemu nebude.
    dolik.rce avatar 22.12.2022 12:18 dolik.rce
    Rozbalit Rozbalit vše Re: C++ hate
    V moderním C++ můžeš použít using std::vector;, čímž deklaruješ, že tuhle konkrétní třídu chceš mít dostupnou v aktuálním namespace bez prefixu. Pak se nemusíš bát, že si způsobíš nějaké obtíže tím, že jsi z std:: namespace přitáhl všechno (včetně operátorů a funkcí, o kterých si nikdy ani neslyšel).
    22.12.2022 12:19 sad
    Rozbalit Rozbalit vše Re: C++ hate
    Tak v některých knihách používají:
    using std::vector;
    using std::string;
    using std::cin;
    using std::cout;
    
    to je asi nejlepší způsob, nicméně v header files musí být všude std::
    23.12.2022 00:57 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: C++ hate
    lines.push_back(line); není idiomatické, idiomatický by byl move (lines.push_back(std::move(line)); nebo dtto s emplace).

    Chlupaté závorky by to chtělo používat konzistentně (u main funkce jsou jinde než u ostatních) a osobně silně preferuju je mít i okolo jednořádkových if/for/atd.

    Import ze std nejlépe pomocí using std::vector atd.

    Jinak jestli tohle přijde jako ošklivý kód, tak počkej, až uvidíš opravdu ošklivé C++ :)
    23.12.2022 17:45 ttttttttttttt
    Rozbalit Rozbalit vše Re: C++ hate
    Neidiomatická mi přijde funkce
    void read_lines(std::vector<std::string>& lines);
    Dává prostor pro různá chování v případě, když kolekce nebude prázdná a omezuje načítání na vektor. Raději
    void read_lines(std::insert_iterator<std::string>& it);
    nebo
    std::vbector<std::string>& lines read_lines();
    31.12.2022 11:54 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: C++ hate
    Dává prostor pro různá chování v případě, když kolekce nebude prázdná a omezuje načítání na vektor. Raději

    void read_lines(std::insert_iterator<std::string>& it);
    Nemelo by to byt spis takto?
            void read_lines(std::insert_iterator<std::vector<std::string>>& it);
    
    Cimz to stejne omezis na vektor :-)
    nebo

    std::vbector<std::string>& lines read_lines();
    A tohle asi melo byt spis takto:
            std::vector<std::string> read_lines();
    
    :-)

    Jinak to ze funkci read_lines() muzes predat konteiner ktery neni prazdny je spis vyhoda nez nevyhoda. A pokud bych to chtel rozsirit i na jine konteinery nez std::vector, tak bych to udelal spis takto:
            template<typename Container>
            void read_lines(Container &c);
    
    5.1.2023 13:44 jdsulin
    Rozbalit Rozbalit vše Re: C++ hate
    To jsi asi vystihl jeden z hlavnich problemu C++, ale i C. Pokud to neni receno v dokumentaci, tak netusis, co presne ti funkce s parametry udela. Jestli ten kontejner smaze a pak prida nebo zda ma pridavat, atd. Je to stejne jako, kdyz mas treba funkci, ktera vraci pointer v C. Mas ho pak uvolnit nebo je to soucasti jine struktury, ktera se uvolnuje jinde napr:

    Point* getStart(Line* line)); // Point je soucasti struktury Line a tim padem se uvolni spolu s uvolnenim Line nebo je to nova instance tridy Point a musis ji uvolnit?

    Podle me by to v tomto pripade mel byt std::vector<> navratova hodnota funkce readLines(), pak je to docela jasne, ale samozrejme bavime se o C++11, kdy std::vector ma move semantics, jinak ti teoreticky hrozi kopirovani celeho vektoru, i kdyz to je jedna ze zakladnich optimalizaci na kterou je spolehnuti.

    Ale dobra praxe je - delej to jak chces, ale v ramci jednoho projektu vzdycky stejne.
    5.1.2023 19:52 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: C++ hate
    V C, ak sa nemusí uvolniť, môžeš definovať s parametrom const.
    debian.plus@protonmail.com
    6.1.2023 08:32 jdsulin
    Rozbalit Rozbalit vše Re: C++ hate
    Pokud chces pointer, ktery muzes menit nebo dale pouzivat treba ve funkce void setX(Point* point), tak ti const nepomuze. V C++ je v takovem pripade lepsi pouzit referenci.

    A vlastne jsi narazil na dalsi problem C/C++ :) const je velmi dobre pouzivat, ale realne to nezarucuje vubec nic. Pamatuji si, ze jsem pouzival jednu knihovnu, ktera vypocitavala prusecik a jeden vstupni parametr byl const vec3d* normal, po provedeni funkce nastalo normal = -normal :)
    6.1.2023 11:11 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: C++ hate
    Hele už je to fakt průhledný, že podprahově prosazuješ Rust :)
    9.1.2023 17:08 jdsulin
    Rozbalit Rozbalit vše Re: C++ hate
    Spise uz mam za sebou docela hodne kodu v C/C++ :) ... Rust nepouzivam
    9.1.2023 17:49 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: C++ hate
    Treba citát dokumentáciu alebo mat unit testy.
    debian.plus@protonmail.com
    Gréta avatar 23.12.2022 19:52 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: C++ hate
    24.12.2022 23:19 Heretik
    Rozbalit Rozbalit vše Re: C++ hate
    Pamatuji C++ bez šablon. Zortech, Borland, GNU, Microsoft.

    Byl to dokonalý jazyk.

    Dokonalost nemůže být ještě dokonalejší. Když přidáte cokoliv k dokonalé věci, zkazíte ji.

    Zkazili jste to. Úplně.

    Ta soudružka Gréta má úplnou pravdu.
    25.12.2022 22:33 _
    Rozbalit Rozbalit vše Re: C++ hate
    ale hovno, C++ byla vždy sračka

    ono i céčko je sračka, ale menší než C++
    26.12.2022 06:30 _
    Rozbalit Rozbalit vše Re: C++ hate
    founded the rust vegan retard
    27.12.2022 11:21 _
    Rozbalit Rozbalit vše Re: C++ hate
    no jestli zvlada programovaci jazyky stejne dobre jako anglictinu, tak nemas pravo se k programovani vubec vyjadrovat, pologramotny debile :)
    27.12.2022 13:37 _
    Rozbalit Rozbalit vše Re: C++ hate
    Sklapni polohramptny vegane ovladany danone a zerouci fruktozu
    27.12.2022 14:32 t@fu
    Rozbalit Rozbalit vše Re: C++ hate
    Fu vidim ze to pozirani mrtvych zvirat te dela dost agresivnim. Na cas se stat alepson vegetarianem.
    27.12.2022 17:10 _
    Rozbalit Rozbalit vše Re: C++ hate
    Jsem členem PETA: People Eating Tasty Animalls
    26.12.2022 12:37 Jose
    Rozbalit Rozbalit vše Re: C++ hate
    +1
    31.12.2022 16:16 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: C++ hate
    -1
    10.1.2023 22:45 Luky
    Rozbalit Rozbalit vše Re: C++ hate
    Zacinal som na basicu v tej dobe at800

    Potom prislo na rad prve pc dal som to na pascal

    Ale jedna znama mi povedala pascal neni nic profesionalne potom som pochopil ze skutocny programatori robia v c a c++ okolo roku 1999 to bolo ok

    No a po tolkych rokoch akurat som mrkol na freepascal zhrozil som sa k comu ten jazyk dospel fakt delphi je slaby odvar a tak len zo zaujimavosti som vygooglil freebasic a celkom sa mi to zapacil a vyzera ze basic je to prave
    15.1.2023 20:34 vgy
    Rozbalit Rozbalit vše Re: C++ hate
    Okolo roku 1999 bolo jasné, že tí správny nerdi, čo sa už v živote nechcú nič učiť, nechcú čumieť do PC od rána do večera a nevnímať svet okolo zistili, že jediný správny jazyk je Visual Basic, v ktorom zbúchajú to čo chcú(a keď niečo treba opraviť, zbúchajú to tiež) a potom sa môžu venovať spaniu za PC(a keď príde šéf, tak sa prebudia)...

    Lenže Microsoft im to v tomto roku pokazil a aj znalci Visual Basic sa musia radšej učiť C#... Fungujúcom zčasti aj pod Linuxom, hehe, ale Microsoft musí ešte popracovať, teda keby chcel :)

    A nejaký Erlang, čo sa chváli všeličím, ale praví znalci Číňaňia(v USA) naň samozrejme háždu bobek :)

    Založit nové vláknoNahoru

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