J'essaie de changer les valeurs entières d'un vecteur en utilisant transform et une structure de contrôle if_then_else de Boost Lambda. Cependant mon compilateur n'apprécie pas mes efforts. Le code que je tentais est:Transformation C++ avec structure de contrôle if_then_else
transform(theVec.begin(), theVec.end(), theVec.begin(),
if_then_else(bind(rand) % ratio == 0, _1 = bind(rand) % maxSize, _1));
J'ai essayé de simplifier à ce qui suit:
transform(theVec.begin(), theVec.end(), theVec.begin(),
if_then_else(0 == 0, _1 = MaxIntSizeCFG, _1));
mais le compilateur me dit: pas de fonction concordante pour appel à « If_Then_Else (...... .... » je lis que les valeurs de retour des structures de contrôle est vide, donc est mon utilisation tentative dans ce cas tout à fait tort?
Merci d'avance pour votre temps!
Ah oui bien sûr, rien n'est renvoyé avec la structure if_the_else. J'ai essayé: transformer (theVec.begin(), theVec.end(), theVec.begin(), if_then_else_return (lier (rand)% ratio == 0, _1 = lier (rand)% maxSize, _1)) ; et cela a bien fonctionné. Merci! – Demps
Pas de problème, j'attends votre prochaine question lambda. : P – GManNickG
Haha, sa file d'attente! En fait pouvez-vous recommander une bonne ressource pour l'expression de lambada? Je viens juste de commencer à les utiliser (comme vous pouvez le dire) et je suis très impressionné par ce qui peut être fait. – Demps