Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: C++0x

Durazell [22.05.2012 11:27:59]

#

Lueskelin Overview of the new C++ eBookia ja törmäsin siellä tämmöiseen.

std::vector<std::future<WordCountMapType>> futures;
for (int argNum = 1; argNum < argc; ++argNum) {
futures.push_back(std::async([=]{ return wordsInFile(argv[argNum]); }));
}

Onko [=]{} alimmalla rivillä lambda vai mitä siellä oikein tapahtuu?

Sisuaski [22.05.2012 12:13:21]

#

Syntaksi []{koodia} on C++11:ssä lambdafunktion määritys joo, eli luodaan funktio joka kutsuttaessa suorittaa aaltosulkujen välissä olevan koodin.

Yhtäsuuruusmerkki hakasulkeiden välissä tarkoittaa, että lambdafunktion käyttämät ulkoiset muuttujat (eli tässä kohtaa argv ja argNum) kopioidaan arvoina lambdan sulkeumaan. Vastaavasti syntaksi [&]{} tarkoittaa, että arvoja ei kopioida vaan niistä otetaan sulkeumaan vain viitteet.

Jos ei tästä selvinnyt niin kannattaa katsoa wikipediasta C++11:n anonyymit funktiot.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta