Y a-t-il un objet de fonction intégré qui renvoie ouais, je sais p-> premier code> et
p-> second code>, afin que je puisse heureusement écrire
SOWOST BOOST code> est le deuxième meilleur. p>
boost :: lambda code>, je ne sais pas vouloir commencer à l'utiliser. p> p>
3 Réponses :
Il existe des extensions non standard à La liaison de Boost peut également le faire, donnez-lui un pointeur à la fonction de membre correcte p> g ++ Code>
et SGI code>
appelé < Code> SELECT1ST CODE> et SELECT2ND CODE>. Donc, il n'y a probablement rien dans la STL pour cela.
Si vous pouvez utiliser C ++ 0x, vous pouvez utiliser de vrais lambdas depuis G ++ 4.5 ou vous pouvez utiliser la nouvelle tipple-bibliothèque qui est entièrement compatible avec STD :: paires. Ensuite, vous pourriez utiliser STD :: Get <0> pour la première et STD :: Get <1> pour la seconde. P>
Si vous êtes lié à C ++ 98, vous pouvez utiliser std :: TR1 :: tuple au lieu de STD :: paire, comme dans TR1 Get ne fonctionne pas avec STD :: paire. P>
Aussi, vous pouvez utiliser Lier de TR1 (TR1 / FONCTIONNEL) comme ELAZAR. P>
Nous pouvons facilement écrire un SELECT1ST et SELECT2ND:
transform(m.begin(),m.end(),back_inserter(keys), select1st()); transform(m.begin(),m.end(),back_inserter(vals), select2nd());
Il semble que vous ayez compris qu'aucun support direct n'existe dans la STL (ou sans vraisemblablement booster), pourquoi ne pas écrire un modèle de fonction simple pour le faire pour vous? Il doit être plus clair que l'approche code> code> ou l'approche non standard ...
@Nim, c'est probablement une bonne idée, mais j'ai toujours peur que tout le monde de l'équipe propose sa propre version de
Littletidbitmissingfromspec code>, donc si je pouvais trouver quelque chose de solide sur boost, ce serait meilleur.
Un espace de noms Utils (ou AUX) bien documentés est ce dont vous avez besoin! ;)