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 13:33 | IT novinky

    Dnes ve 12:00 byla spuštěna první aukce domén .CZ. Zatím největší zájem je o dro.cz, kachnicka.cz, octavie.cz, uvycepu.cz a vnady.cz [𝕏].

    Ladislav Hagara | Komentářů: 1
    dnes 13:22 | Nová verze

    JackTrip byl vydán ve verzi 2.3.0. Jedná se o multiplatformní open source software umožňující hudebníkům z různých částí světa společné hraní. JackTrip lze instalovat také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | Pozvánky

    Patnáctý ročník ne-konference jOpenSpace se koná 4. – 6. října 2024 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytváří všichni účastníci, se skládá z desetiminutových

    … více »
    Zdenek H. | Komentářů: 0
    dnes 03:11 | Nová verze

    Program pro generování 3D lidských postav MakeHuman (Wikipedie, GitHub) byl vydán ve verzi 1.3.0. Hlavní novinkou je výběr tvaru těla (body shapes).

    Ladislav Hagara | Komentářů: 4
    včera 23:11 | Bezpečnostní upozornění

    Intel vydal 41 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20240514 mikrokódů pro své procesory řešící INTEL-SA-01051, INTEL-SA-01052 a INTEL-SA-01036.

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

    Společnost Raspberry Pi patřící nadaci Raspberry Pi chystá IPO a vstup na Londýnskou burzu.

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

    Google na své vývojářské konferenci Google I/O 2024 představil řadu novinek. Keynote byl věnován umělé inteligenci (DeepMind, Gemini, Responsible AI).

    Ladislav Hagara | Komentářů: 1
    včera 12:33 | Bezpečnostní upozornění

    V Gitu bylo nalezeno 5 zranitelností. Opraveny jsou ve verzích 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2 a 2.39.4. Útočník může připravit repozitář tak, že při jeho klonování (git clone) může dojít ke spuštění libovolného kódu.

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

    Virtualizační softwary VMware Workstation Pro a VMware Fusion Pro jsou nově pro osobní použití zdarma. Softwary VMware Workstation Player a VMware Fusion Player končí.

    Ladislav Hagara | Komentářů: 2
    včera 02:11 | Nová verze

    Linuxová distribuce Endless OS (Wikipedie) byla vydána ve verzi 6.0.0. Přehled novinek i s náhledy v příspěvku na blogu, poznámkách k vydání a také na YouTube.

    Ladislav Hagara | Komentářů: 2
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (74%)
     (6%)
     (10%)
     (10%)
    Celkem 290 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    C++ hate

    22.12.2022 10:39 | Přečteno: 1292× | 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.