55 votes

Ajout à un vecteur de paire

J'ai un vector de pair comme ceci :

 vector<pair<string,double>> revenue;

Je veux ajouter une chaîne et un double à partir d'une carte comme celle-ci :

 revenue[i].first = "string";
revenue[i].second = map[i].second;

Mais comme le revenu n'est pas initialisé, il génère une erreur hors limites. J'ai donc essayé d'utiliser vector::push_back comme ceci :

 revenue.push_back("string",map[i].second);

Mais cela dit ne peut pas prendre deux arguments. Alors, comment puis-je ajouter à cela vector de pair ?

112voto

avakar Points 20031

Utiliser std::make_pair :

 revenue.push_back(std::make_pair("string",map[i].second));

38voto

m47h Points 1441

À mon humble avis , une très bonne solution consiste à utiliser la fonction c++11 emplace_back :

 revenue.emplace_back("string", map[i].second);

Cela crée simplement un nouvel élément en place.

11voto

Ed S. Points 70246
revenue.pushback("string",map[i].second);

Mais cela dit ne peut pas prendre deux arguments. Alors, comment puis-je ajouter à cette paire de vecteurs ?

Vous êtes sur la bonne voie, mais pensez-y ; que contient votre vecteur ? Il ne contient certainement pas une chaîne et un int dans une position, il contient un Pair . Donc...

 revenue.push_back( std::make_pair( "string", map[i].second ) );     

10voto

Hsu Hau Points 167

Ou vous pouvez utiliser initialize list :

 revenue.push_back({"string", map[i].second});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X