2015-12-12 3 views
0

J'ai une fonction qui retourne std::pair<int, double>.C++ Utiliser une paire comme paramètre d'une autre fonction

Je souhaite créer une autre fonction pour utiliser la paire de la fonction précédente et afficher les données de la paire, c'est-à-dire à la fois la première et la seconde. Est-il possible de passer le retour de la fonction précédente en tant que paramètre pour ma nouvelle fonction afin que la deuxième fonction puisse voir les données? Je ne suis pas sûr de la syntaxe en C++.

Répondre

1
void func2(const std::pair <int, double>& data) 
{ 

} 

std::pair <int, double> func1 (/* ... * /) 
{ 
    //return pair 
} 

appellent alors

func2 (fun1(/*... */)); 
0

Je suppose que vous voulez dire quelque chose comme l'exemple ci-dessus:

#include <utility> 

std::pair<int, double> create() { 
    return std::make_pair(4, 2.); 
} 

void accept(std::pair<int, double> p) { } 

int main() { 
    accept(create()); 
} 

La réponse est oui, vous pouvez le faire.

Si vous ne voulez pas passer à accepter une copie de la paire, au lieu que vous voulez soumettre l'instance exacte de celui-ci vous travaillez avec la fonction principale, vous pouvez modifier légèrement le prototype des fonctions comme il suit:

#include <utility> 

std::pair<int, double> create() { 
    return std::make_pair(4, 2.); 
} 

void accept(std::pair<int, double>& p) { } 

int main() { 
    auto p = create(); 
    accept(p); 
} 

Et ainsi de suite ...

+1

Vous ne devriez jamais spécifier les arguments de modèle pour 'make_pair'. L'objectif du modèle de fonction est de déduire ses arguments de type. –

+0

Vous avez raison, ma faute d'être bavard en faveur de l'OP. – skypjack