Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: teele - 24.05.18 - klo:15.42
-
Haluaisin määritellä ja laittaa funktioita std::vectoriin niin, että ohjelmatekstissä funktio näkyisi aika lähellä sitä paikkaa, jossa se lisätään vectoriin. Main-ohjelmassa ei näköjään voi määritellä funktioita, mutta lambdoja voi, koodi alla.
#include <stdlib.h> /* mm. atof */
#include<iostream>
int main(int argc , char *argv[] )
{
auto a = [](double a, double b, double c) { return a*b*c; };
std::cout << "lambdakokeilu " << a(1, 2, 3) << std::endl;
//auto koef(double a, double b, double c) { return a*b*c; }
//std::cout << "koefunktion kokeilu " << koef(1, 2, 3) << std::endl;
return 1;
}
// g++ koe01.cpp -Wall -pedantic -std=c++11 -o koe01
// cd Documents/my_c++/k-kansio
Tavalliset funktiomäärittelyt olisivat kuitenkin selkeämmän näköisiä, vaikka se ehkä onkin makuasia.
Olisiko jotain helppoa keinoa määritellä funktioita niissä kohdissa, joissa niitä laitetaan esimerkiksi vectoriin niin, että ei tarvitsisi käyttää lambdoja.
-
Olisiko jotain helppoa keinoa määritellä funktioita niissä kohdissa, joissa niitä laitetaan esimerkiksi vectoriin niin, että ei tarvitsisi käyttää lambdoja.
Voit käyttää lokaalisti määriteltyä luokkaa, jossa funktio on sulkuoperaattorina: https://stackoverflow.com/questions/4324763/can-we-have-functions-inside-functions/4325449#4325449
Lambdasyntaksi on kyllä paljon siistimpi tässä.