C ++ Russia: nws tshwm sim li cas

Yog tias thaum pib ntawm kev ua si koj hais tias muaj C ++ code dai ntawm phab ntsa, tom qab kawg nws yog khi rau tua koj hauv ko taw.

Bjarne Stroustrup

Txij Lub Kaum Hli 31 txog Lub Kaum Ib Hlis 1, C ++ Russia Piter lub rooj sib tham tau muaj nyob rau hauv St. Petersburg - yog ib lub rooj sib tham loj loj hauv tebchaws Russia, tsim los ntawm JUG Ru Group. Caw cov neeg hais lus muaj xws li cov tswv cuab ntawm C ++ Standards Committee, CppCon hais lus, O'Reilly phau ntawv sau, thiab cov saib xyuas cov haujlwm xws li LLVM, libc++, thiab Boost. Lub rooj sib tham yog tsom rau cov neeg paub txog C ++ tsim tawm uas xav ua kom lawv cov kev txawj ntse thiab sib pauv kev paub hauv kev sib txuas lus nyob. Cov tub ntxhais kawm, cov tub ntxhais kawm tiav thiab cov kws qhia ntawv hauv tsev kawm qib siab tau muab cov luv nqi zoo heev.

Moscow tsab ntawm lub rooj sib tham yuav muaj nyob rau thaum ntxov lub Plaub Hlis xyoo tom ntej, tab sis nyob rau hauv lub meantime peb cov tub ntxhais kawm yuav qhia rau koj paub dab tsi nthuav lawv kawm nyob rau hauv lub xeem kev tshwm sim. 

C ++ Russia: nws tshwm sim li cas

Duab los ntawm kev sib tham album

О нас

Ob tug menyuam kawm ntawv los ntawm National Research University Higher School of Economics - St. Petersburg tau ua haujlwm ntawm no ncej:

  • Liza Vasilenko yog 4 xyoo kawm tiav undergraduate menyuam kawm ntawv Programming Languages ​​​​ib feem ntawm Applied Mathematics thiab Computer Science program. Tau paub txog C ++ lus hauv kuv thawj xyoo hauv tsev kawm ntawv, kuv tau txais kev paub ua haujlwm nrog nws los ntawm kev xyaum ua haujlwm hauv kev lag luam. Kuv mob siab rau cov lus programming feem ntau thiab kev ua haujlwm hauv kev ua haujlwm tshwj xeeb tseem tshuav nws cov cim ntawm kev xaiv cov lus ceeb toom ntawm lub rooj sib tham.
  • Danya Smirnov yog tus tub ntxhais kawm xyoo 1 ntawm tus tswv txoj haujlwm "Programming thiab Data Analysis". Thaum tseem nyob hauv tsev kawm ntawv, kuv tau sau cov teeb meem Olympiad hauv C ++, thiab tom qab ntawd nws tau tshwm sim tias cov lus tas li tuaj hauv kev kawm thiab nws thiaj li dhau los ua hom lus tseem ceeb. Kuv txiav txim siab los koom nrog lub rooj sab laj los txhim kho kuv txoj kev paub thiab kuj kawm txog cov cib fim tshiab.

Nyob rau hauv tsab ntawv xov xwm, cov thawj coj ntawm cov kws qhia ntawv feem ntau qhia txog cov xwm txheej kev kawm uas cuam tshuam txog peb txoj haujlwm tshwj xeeb. Thaum lub Cuaj Hlis peb pom cov ntaub ntawv hais txog C ++ Russia thiab txiav txim siab sau npe ua cov neeg mloog. Nov yog peb qhov kev paub thawj zaug ntawm kev koom nrog cov rooj sib tham no.

Lub rooj sablaj qauv

  • Tshaj tawm

Nyob rau ob hnub, cov kws tshaj lij tau nyeem 30 tsab ntawv ceeb toom, suav nrog ntau lub ntsiab lus kub: kev siv cov lus zoo los daws cov teeb meem siv, kev hloov kho lus yav tom ntej nrog rau tus qauv tshiab, kev cuam tshuam hauv C ++ tsim thiab ceev faj thaum ua haujlwm nrog lawv cov txiaj ntsig, piv txwv ntawm nthuav qhov project architecture, nrog rau qee cov ntsiab lus hauv qab ntawm cov lus infrastructure. Peb qhov kev ua yeeb yam tau tshwm sim ib txhij, feem ntau ob yog lus Lavxias thiab ib qho ua lus Askiv.

  • Cov cheeb tsam sib tham

Tom qab hais lus, tag nrho cov lus nug uas tsis tau nug thiab kev sib tham tsis tiav tau raug xa mus rau cov chaw tshwj xeeb rau kev sib txuas lus nrog cov neeg hais lus, nruab nrog cov cim kos npe. Ib txoj hauv kev zoo rau thaum nyob deb ntawm kev hais lus nrog kev sib tham zoo siab.

  • Lightning Talks thiab kev sib tham tsis raug cai

Yog tias koj xav muab ib daim ntawv qhia luv luv, koj tuaj yeem sau npe rau ntawm daim ntawv dawb rau yav tsaus ntuj Lightning Talk thiab tau txais tsib feeb sijhawm los tham txog txhua yam ntawm lub rooj sab laj. Piv txwv li, kev qhia ceev ceev rau cov tshuaj tua kab mob rau C ++ (rau qee qhov nws yog tshiab) lossis ib zaj dab neeg hais txog kab mob hauv sine yoj tiam uas tuaj yeem hnov, tab sis tsis pom.

Lwm hom ntawv yog pawg sib tham "Nrog Lub Plawv rau Lub Plawv Pab Pawg." Nyob rau theem yog qee cov tswv cuab ntawm pawg tswj hwm tus qauv, ntawm qhov projector yog qhov cub (ua haujlwm - los tsim kom muaj lub siab dawb paug, tab sis vim li cas "vim txhua yam yog ON FIRE" zoo li funny), cov lus nug txog tus qauv thiab kev pom dav dav ntawm C ++ , tsis muaj rhuab kev sib tham thiab holiwars. Nws muab tawm tias pawg neeg tseem muaj cov neeg nyob uas yuav tsis paub meej txog qee yam lossis tsis paub ib yam dab tsi.

Rau cov kiv cua ntawm holivars, qhov kev tshwm sim thib peb tseem nyob ntawm rooj plaub - BOF kev sib tham "Mus vs. C ++". Peb coj tus Go lover, C ++ tus hlub, ua ntej pib qhov kev sib tham lawv ua ke npaj 100500 slides ntawm ib lub ntsiab lus (xws li teeb meem nrog pob hauv C ++ lossis tsis muaj generics hauv Go), thiab tom qab ntawd lawv muaj kev sib tham nrog lawv tus kheej thiab. nrog cov neeg tuaj saib, thiab cov neeg tuaj saib sim nkag siab txog ob lub ntsiab lus ntawm ib zaug. Yog hais tias lub holivar pib tawm ntawm cov ntsiab lus, tus neeg saib xyuas cuam tshuam thiab rov sib haum xeeb rau ob tog. Cov hom ntawv no yog hom: ob peb teev tom qab pib, tsuas yog ib nrab ntawm cov swb tau ua tiav. Qhov kawg yuav tsum tau nrawm heev.

  • Tus khub sawv

Cov neeg koom tes ntawm lub rooj sib tham tau sawv cev hauv cov chav tsev - ntawm qhov chaw lawv tau tham txog cov haujlwm tam sim no, muaj kev xyaum ua haujlwm thiab kev ua haujlwm, tuav cov lus nug thiab kev sib tw me me, thiab tseem tau txais txiaj ntsig zoo. Nyob rau tib lub sijhawm, qee lub tuam txhab txawm tau hais kom dhau los ntawm thawj theem ntawm kev xam phaj, uas tuaj yeem muaj txiaj ntsig zoo rau cov neeg tuaj yeem tsis tsuas yog mloog cov lus ceeb toom.

Technical cov ntsiab lus ntawm cov ntawv ceeb toom

Peb tau mloog cov lus ceeb toom ob hnub. Qee lub sij hawm nws nyuaj rau xaiv ib daim ntawv tshaj tawm los ntawm cov sib npaug - peb tau pom zoo sib cais thiab sib pauv cov kev paub tau txais thaum so. Thiab txawm li ntawd los, nws zoo nkaus li tias tshuav ntau npaum li cas. Ntawm no peb xav tham txog cov ntsiab lus ntawm qee qhov kev tshaj tawm uas peb pom tau nthuav dav tshaj plaws

Kev zam hauv C ++ los ntawm prism ntawm compiler optimizations, Roman Rusyaev

C ++ Russia: nws tshwm sim li cas
Xaub los ntawm kev nthuav qhia

Raws li lub npe qhia, Roman saib ua haujlwm nrog kev zam siv LLVM ua piv txwv. Nyob rau tib lub sijhawm, rau cov neeg uas tsis siv Clang hauv lawv txoj haujlwm, daim ntawv tshaj tawm tseem tuaj yeem muab qee lub tswv yim ntawm txoj cai yuav ua li cas thiaj li ua tau zoo. Qhov no yog li ntawd vim hais tias cov neeg tsim khoom ntawm compilers thiab cov qauv tsev qiv ntawv sib txuas lus nrog ib leeg thiab ntau txoj kev daws teeb meem zoo tuaj yeem sib koom ua ke.

Yog li, txhawm rau tswj qhov kev zam, koj yuav tsum ua ntau yam: hu rau tus lej tuav (yog tias muaj) lossis cov peev txheej pub dawb ntawm qib tam sim no thiab tig cov pawg siab dua. Tag nrho cov no ua rau lub fact tias lub compiler ntxiv cov lus qhia ntxiv rau kev hu uas muaj feem cuam tshuam. Yog li ntawd, yog tias qhov kev zam tsis tau tsa, qhov kev zov me nyuam tseem yuav ua qhov tsis tsim nyog. Txhawm rau kom txo qis nyiaj siv ua haujlwm, LLVM muaj ntau qhov kev txiav txim siab rau kev txiav txim siab qhov xwm txheej tshwj xeeb uas tsis tas yuav tsum tau ntxiv lossis cov lus qhia "ntxiv" tuaj yeem txo qis.

Tus neeg hais lus tshuaj xyuas txog kaum ob ntawm lawv thiab qhia ob qho xwm txheej uas lawv pab ua kom tiav cov haujlwm, thiab cov txheej txheem no tsis siv.

Yog li, Roman Rusyaev coj cov tub ntxhais kawm mus rau qhov xaus tias txoj cai muaj kev zam tsis tuaj yeem ua tiav nrog xoom nyiaj siv ua haujlwm, thiab muab cov lus qhia hauv qab no:

  • thaum tsim cov tsev qiv ntawv, nws tsim nyog tso tseg qhov kev zam hauv txoj cai;
  • yog tias tseem xav tau kev zam, ces thaum twg ua tau nws tsim nyog ntxiv noexcept (thiab const) modifiers nyob txhua qhov chaw kom cov compiler tuaj yeem ua kom zoo dua li ntau li ntau tau.

Feem ntau, tus neeg hais lus tau lees paub qhov kev pom tias kev zam yog qhov zoo tshaj plaws siv rau qhov tsawg kawg nkaus lossis tso tseg tag nrho.

Cov ntaub ntawv slides muaj nyob rau ntawm qhov txuas hauv qab no: ["C ++ zam dhau ntawm lub lens ntawm LLVM compiler optimizations"]

Generators, coroutines thiab lwm lub hlwb-unrolling qab zib, Adi Shavit

C ++ Russia: nws tshwm sim li cas
Xaub los ntawm kev nthuav qhia

Ib qho ntawm ntau cov lus ceeb toom ntawm lub rooj sib tham no tau mob siab rau kev tsim kho tshiab hauv C ++ 20 yog qhov nco tsis tau tsuas yog rau nws cov yeeb yuj nthuav qhia, tab sis kuj rau nws qhov kev paub meej ntawm cov teeb meem uas twb muaj lawm nrog kev sau cov txheej txheem (rau lub voj, hu rov qab).

Adi Shavit tau hais txog cov hauv qab no: cov txheej txheem tam sim no tau dhau los ntawm tag nrho cov sau thiab tsis muab kev nkag mus rau qee lub xeev nruab nrab nruab nrab (lossis lawv ua thaum hu rov qab, tab sis muaj ntau yam tsis zoo, xws li Callback Hell). . Nws yuav zoo li tias muaj iterators, tab sis txawm nrog lawv txhua yam tsis zoo li: tsis muaj cov ntsiab lus nkag thiab tawm (pib → kawg piv rau rbegin → rend thiab lwm yam), nws tsis paub meej tias peb yuav rov hais dua ntev npaum li cas? Pib nrog C ++ 20, cov teeb meem no tau daws!

Thawj qhov kev xaiv: ntau yam. Los ntawm wrapping iterators, peb tau txais ib qho kev sib txuas rau qhov pib thiab xaus ntawm ib qho iteration, thiab peb kuj tau txais lub peev xwm los sau. Tag nrho cov no ua rau nws yooj yim los tsim cov ntaub ntawv ua tiav cov kav dej. Tab sis tsis yog txhua yam yog du heev: ib feem ntawm kev xam cov logic yog nyob rau hauv qhov kev siv ntawm ib tug tshwj xeeb iterator, uas yuav nyuaj rau nkag siab thiab debug.

C ++ Russia: nws tshwm sim li cas
Xaub los ntawm kev nthuav qhia

Zoo, rau qhov no, C ++ 20 ntxiv coroutines (kev ua haujlwm uas nws tus cwj pwm zoo ib yam li cov tshuab hluav taws xob hauv Python): kev tua tuaj yeem ncua los ntawm kev xa rov qab qee tus nqi tam sim no thaum khaws cia lub xeev nruab nrab. Yog li, peb ua tsis tau tsuas yog ua haujlwm nrog cov ntaub ntawv raws li nws tshwm sim, tab sis kuj encapsulating tag nrho cov logic nyob rau hauv ib tug tshwj xeeb coroutine.

Tab sis muaj yoov nyob rau hauv cov tshuaj pleev: tam sim no lawv tsuas yog ib feem ntawm kev txhawb nqa los ntawm cov compilers uas twb muaj lawm, thiab tseem tsis tau ua kom zoo zoo raws li peb xav tau: piv txwv li, nws tseem tsis tau tsim nyog siv cov ntaub ntawv thiab cov khoom ib ntus hauv coroutines. Ntxiv rau, muaj qee qhov kev txwv ntawm dab tsi tuaj yeem yog coroutines, thiab constexpr functions, constructors / destructors, thiab lub ntsiab tsis suav nrog hauv daim ntawv teev npe no.

Yog li, coroutines daws ib feem tseem ceeb ntawm cov teeb meem nrog qhov yooj yim ntawm cov ntaub ntawv ua cov logic, tab sis lawv cov kev siv tam sim no xav tau kev txhim kho.

Cov Ntaub Ntawv:

C ++ tricks los ntawm Yandex.Taxi, Anton Polukhin

Hauv kuv cov haujlwm tshaj lij, qee zaum kuv yuav tsum siv cov khoom pabcuam nkaus xwb: ib lub hnab ntim nruab nrab ntawm lub interface sab hauv thiab API ntawm qee lub tsev qiv ntawv, nkag lossis cais. Hauv qhov no, feem ntau tsis tas yuav muaj kev txhim kho ntxiv. Tab sis yuav ua li cas yog tias cov khoom siv no tau siv hauv qee qhov kev pabcuam nrov tshaj plaws ntawm RuNet? Nyob rau hauv cov xwm txheej zoo li no, koj yuav tau ua terabytes ib teev ntawm cov cav ib leeg! Tom qab ntawd txhua millisecond suav thiab yog li koj yuav tsum tau mus rau ntau yam kev dag ntxias - Anton Polukhin tham txog lawv.

Tej zaum qhov piv txwv zoo tshaj plaws yog qhov kev siv ntawm tus taw tes rau kev siv (pimpl) qauv. 

#include <third_party/json.hpp> //PROBLEMS! 
struct Value { 
    Value() = default; 
    Value(Value&& other) = default; 
    Value& operator=(Value&& other) = default; 
    ~Value() = default; 

    std::size_t Size() const { return data_.size(); } 

private: 
    third_party::Json data_; 
};

Hauv qhov piv txwv no, ua ntej kuv xav kom tshem tawm cov ntaub ntawv header ntawm cov tsev qiv ntawv sab nraud - qhov no yuav suav tau sai dua, thiab koj tuaj yeem tiv thaiv koj tus kheej los ntawm cov npe tsis sib haum xeeb thiab lwm yam yuam kev zoo sib xws. 

Okay, peb tsiv #nrog rau cov ntaub ntawv .cpp: peb xav tau kev tshaj tawm tom ntej ntawm cov ntaub qhwv API, nrog rau std::unique_ptr. Tam sim no peb muaj dynamic faib thiab lwm yam tsis kaj siab xws li cov ntaub ntawv nyob rau hauv ib pawg ntawm cov ntaub ntawv thiab txo guarantees. std::aligned_storage tuaj yeem pab nrog txhua qhov no. 

struct Value { 
// ... 
private: 
    using JsonNative = third_party::Json; 
    const JsonNative* Ptr() const noexcept; 
    JsonNative* Ptr() noexcept; 

    constexpr std::size_t kImplSize = 32; 
    constexpr std::size_t kImplAlign = 8; 
    std::aligned_storage_t<kImplSize, kImplAlign> data_; 
};

Qhov teeb meem nkaus xwb: koj yuav tsum tau hais kom meej qhov loj me thiab kev sib haum xeeb rau txhua lub wrapper - cia peb ua peb cov qauv pimpl nrog cov tsis muaj , siv qee qhov tsis txaus ntseeg thiab ntxiv daim tshev rau tus destructor uas peb tau txais txhua yam zoo: 

~FastPimpl() noexcept { 
    validate<sizeof(T), alignof(T)>(); 
    Ptr()->~T(); 
}

template <std::size_t ActualSize, std::size_t ActualAlignment>
static void validate() noexcept { 
    static_assert(
        Size == ActualSize, 
        "Size and sizeof(T) mismatch"
    ); 
    static_assert(
        Alignment == ActualAlignment, 
        "Alignment and alignof(T) mismatch"
    ); 
}

Txij li thaum T tau txhais tau hais tias thaum ua cov destructor, cov cai no yuav raug parsed kom raug thiab nyob rau theem muab tso ua ke nws yuav tso tawm qhov yuav tsum tau muaj qhov loj me thiab qhov sib npaug uas yuav tsum tau nkag mus ua qhov yuam kev. Yog li, ntawm tus nqi ntawm ib qho kev sib sau ua ke ntxiv, peb tshem tawm qhov kev faib tawm ntawm cov chav kawm qhwv, nkaum API hauv cov ntaub ntawv .cpp nrog rau kev siv, thiab kuj tau txais cov qauv tsim uas tsim nyog rau caching los ntawm lub processor.

Kev txheeb xyuas thiab txheeb xyuas zoo li tsis tshua muaj txiaj ntsig thiab yog li yuav tsis hais hauv qhov kev tshuaj xyuas no.

Cov ntaub ntawv slides muaj nyob rau ntawm qhov txuas hauv qab no: ["C++ tricks los ntawm Taxi"]

Cov txheej txheem niaj hnub los khaws koj cov cai DRY, Björn Fahller

Hauv kev hais lus no, Björn Fahller qhia ntau txoj hauv kev los tawm tsam qhov tsis txaus ntseeg ntawm kev kuaj mob rov qab:

assert(a == IDLE || a == CONNECTED || a == DISCONNECTED);

Suab paub? Los ntawm kev siv ntau lub zog C ++ cov tswv yim qhia nyob rau hauv cov qauv tsis ntev los no, koj tuaj yeem ua tau zoo ua haujlwm zoo ib yam yam tsis muaj kev nplua nuj. Sib piv:   

assert(a == any_of(IDLE, CONNECTED, DISCONNECTED));

Txhawm rau tswj xyuas tus lej tsis tas, koj tam sim ntawd yuav tsum siv cov qauv sib txawv thiab cov kab lus sib dhos. Cia peb xav tias peb xav txheeb xyuas qhov sib npaug ntawm ntau qhov sib txawv rau lub enum lub xeev_type keeb. Thawj qhov uas los rau hauv siab yog sau tus pab ua haujlwm yog_any_of:


enum state_type { IDLE, CONNECTED, DISCONNECTED };

template <typename ... Ts>
bool is_any_of(state_type s, const Ts& ... ts) { 
    return ((s == ts) || ...); 
}

Qhov kev tshwm sim nruab nrab no yog kev poob siab. Txog tam sim no tus lej tsis tau nyeem ntau dua:

assert(is_any_of(state, IDLE, DISCONNECTING, DISCONNECTED)); 

Tsis yog hom template parameter yuav pab txhim kho qhov teeb meem me ntsis. Nrog lawv cov kev pab, peb yuav hloov lub enumerable ntsiab ntawm lub enum rau daim ntawv teev cov template tsis: 

template <state_type ... states>
bool is_any_of(state_type t) { 
    return ((t == states) | ...); 
}
	
assert(is_any_of<IDLE, DISCONNECTING, DISCONNECTED>(state)); 

Los ntawm kev siv nws pib nyob rau hauv ib tug tsis-type template parameter (C ++ 17), txoj kev yooj yim generalizes rau kev sib piv tsis tau tsuas yog nrog state_type ntsiab, tab sis kuj nrog primitive hom uas yuav siv tau raws li tsis-type template parameters:


template <auto ... alternatives, typename T>
bool is_any_of(const T& t) {
    return ((t == alternatives) | ...);
}

Los ntawm cov kev txhim kho txuas ntxiv no, qhov xav tau zoo syntax rau cov tshev tau tiav:


template <class ... Ts>
struct any_of : private std::tuple<Ts ...> { 
// поленимся и унаследуем конструкторы от tuple 
        using std::tuple<Ts ...>::tuple;
        template <typename T>
        bool operator ==(const T& t) const {
                return std::apply(
                        [&t](const auto& ... ts) {
                                return ((ts == t) || ...);
                        },
                        static_cast<const std::tuple<Ts ...>&>(*this));
        }
};

template <class ... Ts>
any_of(Ts ...) -> any_of<Ts ... >;
 
assert(any_of(IDLE, DISCONNECTING, DISCONNECTED) == state);

Hauv qhov piv txwv no, phau ntawv qhia txiav tawm ua haujlwm los qhia txog cov qauv kev xav tau ntawm cov qauv rau cov compiler, uas paub txog hom kev sib cav ntawm tus tsim. 

Ntxiv - nthuav ntxiv. Bjorn qhia yuav ua li cas rau generalize cov lej tshwm sim rau cov neeg ua haujlwm sib piv dhau ntawm ==, thiab tom qab ntawd rau kev ua haujlwm tsis txaus ntseeg. Raws li txoj kev, xws li nta xws li no_unique_address attribute (C ++ 20) thiab template tsis nyob rau hauv lambda zog (C ++ 20) yog piav qhia siv piv txwv ntawm kev siv. (Yog lawm, tam sim no lub lambda syntax tseem yooj yim dua rau nco - cov no yog plaub sib law liag ntawm txhua yam.) Cov kev daws teeb meem kawg uas siv cov dej num raws li tus tsim cov ntsiab lus yeej sov kuv tus ntsuj plig, tsis txhob hais txog cov lus tuple hauv cov kab ke zoo tshaj plaws ntawm lambda. suav.

Thaum kawg, tsis txhob hnov ​​qab polish nws li:

  • Nco ntsoov tias lambdas yog constexpr dawb; 
  • Cia peb ntxiv kev xa mus zoo meej thiab saib nws cov lus dab neeg dab tuag nyob rau hauv kev sib raug zoo rau cov khoom ntim hauv lambda kaw;
  • Cia peb muab lub compiler ntau lub cib fim rau optimizations nrog conditional noex; 
  • Cia peb saib xyuas qhov kev nkag siab ntau dua qhov yuam kev tso tawm hauv cov qauv ua tsaug rau qhov tseeb rov qab qhov tseem ceeb ntawm lambdas. Qhov no yuav yuam kom lub compiler ua ntau yam kev kuaj ua ntej lub template muaj nuj nqi yog hu ua tiag tiag - nyob rau hauv hom tshuaj xyuas theem. 

Yog xav paub ntxiv, thov mus saib cov ntaub ntawv qhia: 

Peb qhov kev xav

Peb thawj qhov kev koom tes hauv C ++ Russia tau nco txog nws qhov kev siv zog. Kuv tau txais qhov kev xav ntawm C ++ Russia raws li qhov kev tshwm sim muaj siab, qhov twg txoj kab ntawm kev cob qhia thiab kev sib txuas lus nyob yuav luag tsis pom. Txhua yam, los ntawm lub siab xav ntawm cov neeg hais lus mus rau cov kev sib tw los ntawm cov koom tes hauv kev tshwm sim, yog qhov zoo rau kev sib tham sib tham. Cov ntsiab lus ntawm lub rooj sib tham, suav nrog cov lus ceeb toom, suav nrog ntau yam ntawm cov ncauj lus suav nrog C ++ kev tsim kho tshiab, cov ntaub ntawv tshawb fawb ntawm cov haujlwm loj thiab kev xav txog kev tsim vaj tsev. Tab sis nws yuav tsis ncaj ncees rau tsis quav ntsej txog kev sib raug zoo ntawm qhov kev tshwm sim, uas pab kov yeej cov lus teeb meem hauv kev sib raug zoo tsis yog rau C ++ xwb.

Peb ua tsaug rau cov koom haum lub rooj sab laj rau lub sijhawm los koom nrog cov xwm txheej zoo li no!
Tej zaum koj yuav tau pom cov neeg ua haujlwm tshaj tawm txog yav dhau los, tam sim no thiab yav tom ntej ntawm C ++ Russia ntawm JUG Ru blog.

Ua tsaug rau kev nyeem ntawv, thiab peb vam tias peb qhov kev rov hais dua ntawm cov xwm txheej yuav pab tau!

Tau qhov twg los: www.hab.com

Ntxiv ib saib