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 18:11 | IT novinky

    Dnes a zítra probíhá vývojářská konference Google I/O 2025. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).

    Ladislav Hagara | Komentářů: 0
    dnes 15:22 | Komunita

    V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).

    Ladislav Hagara | Komentářů: 0
    dnes 15:00 | Nová verze

    Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.

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

    Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.

    jose17 | Komentářů: 0
    dnes 04:44 | IT novinky

    Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevili v únicích dat a případně se nechat na další úniky upozorňovat.

    Ladislav Hagara | Komentářů: 13
    včera 23:22 | Zajímavý software

    Microsoft představil open source textový editor Edit bežící v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 7
    včera 22:22 | Zajímavý software

    V Seattlu a také online probíhá konference Microsoft Build 2025. Microsoft představuje své novinky. Windows Subsystem for Linux je nově open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

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

    Z příspěvku Turris Sentinel – co přinesl rok 2024 na blogu CZ.NIC: "Za poslední rok (únor 2024 – únor 2025) jsme zachytili 8,3 miliardy incidentů a to z 232 zemí a z jejich závislých území. Tyto útoky přišly od 6,2 milionu útočníků (respektive unikátních adres). SMTP minipot je stále nejlákavější pastí, zhruba 79 % útoků bylo směřováno na tento minipot, 16 % útoků směřovalo na minipot Telnet, 3 % útoků směřovaly na minipot HTTP a 2 % na minipot FTP. Dále jsme zaznamenali 3,2 milionu unikátních hesel a 318 tisíc unikátních loginů, které útočníci zkoušeli."

    Ladislav Hagara | Komentářů: 1
    včera 12:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová verze 3.0.4 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.

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

    Byla vydána nová stabilní verze 7.4 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 136. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    Jaký je váš oblíbený skriptovací jazyk?
     (60%)
     (24%)
     (10%)
     (0%)
     (0%)
     (0%)
     (7%)
    Celkem 42 hlasů
     Komentářů: 4, poslední včera 22:41
    Rozcestník

    C++ hate

    22.12.2022 10:39 | Přečteno: 1353× | 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: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: C++ hate

    furt jakoby víc lepčejší než rust :P :D ;D ;D

    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.