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í
×
    včera 23:55 | Nová verze

    Byla vydána nová stabilní verze 24.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Uakari. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.

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

    Byla vydána nová verze 1.48.0 sady nástrojů pro správu síťových připojení NetworkManager. Novinkám se v příspěvku na blogu NetworkManageru věnuje Fernando F. Mancera. Mimo jiné se v nastavení místo mac-address-blacklist nově používá mac-address-denylist.

    Ladislav Hagara | Komentářů: 7
    včera 17:11 | Komunita

    Před 25 lety, 31. května 1999, započal vývoj grafického editoru Krita (Wikipedie). Tenkrát ještě pod názvem KImageShop a později pod názvem Krayon.

    Ladislav Hagara | Komentářů: 2
    včera 12:55 | Nová verze

    Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 24.05.0 editoru videa Kdenlive (Wikipedie). Ke stažení brzy také na Flathubu.

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

    David Revoy, autor mj. komiksu Pepper&Carrot, se rozepsal o své aktuální grafické pracovní stanici: Debian 12 Bookworm, okenní systém X11, KDE Plasma 5.27, …

    Ladislav Hagara | Komentářů: 6
    30.5. 22:44 | Nová verze

    Wayland (Wikipedie) byl vydán ve verzi 1.23.0. Z novinek lze vypíchnout podporu OpenBSD.

    Ladislav Hagara | Komentářů: 0
    30.5. 21:22 | Zajímavý článek

    Craig Loewen na blogu Microsoftu představil novinky ve Windows Subsystému pro Linux (WSL). Vypíchnout lze GUI aplikaci pro nastavování WSL nebo správu WSL z Dev Home.

    Ladislav Hagara | Komentářů: 0
    30.5. 12:44 | Pozvánky

    V sobotu 1. června lze navštívit Maker Faire Ostrava, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    30.5. 12:22 | Nová verze

    Webový server Caddy (Wikipedie) s celou řadou zajímavých vlastností byl vydán ve verzi 2.8 (𝕏). Přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 13
    29.5. 22:11 | Nová verze

    Byla vydána verze 3.0 (@, 𝕏) svobodného softwaru HAProxy (The Reliable, High Performance TCP/HTTP Load Balancer; Wikipedie) řešícího vysokou dostupnost, vyvažování zátěže a reverzní proxy. Detailní přehled novinek v příspěvku na blogu společnosti HAProxy Technologies.

    Ladislav Hagara | Komentářů: 7
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (90%)
     (3%)
     (4%)
     (4%)
    Celkem 1066 hlasů
     Komentářů: 17, poslední včera 15:31
    Rozcestník

    C++ hate

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