J'ai un vector
de pair
comme celui-ci:
vector<pair<string,double>> revenue;
Je veux ajouter une chaîne et un double d'une carte comme celle-ci:
revenue[i].first = "string";
revenue[i].second = map[i].second;
Mais comme les revenus ne sont pas initialisés, ils génèrent une erreur hors limites. Alors j'ai essayé d'utiliser vector::Push_back
comme ça:
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
?
Utilisation std::make_pair
:
revenue.Push_back(std::make_pair("string",map[i].second));
IMHO, une solution très agréable consiste à utiliser c ++ 11 emplace_back fonction:
revenue.emplace_back("string", map[i].second);
Cela crée simplement un nouvel élément en place.
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 le bon chemin, mais réfléchissez-y; que tient ton vecteur? Il ne tient certainement pas une chaîne et un int dans une position, il contient un Pair
. Alors...
revenue.Push_back( std::make_pair( "string", map[i].second ) );
Ou vous pouvez utiliser la liste d'initialisation:
revenue.Push_back({"string", map[i].second});
Lisez la documentation suivante:
http://cplusplus.com/reference/std/utility/make_pair/
ou
http://en.cppreference.com/w/cpp/utility/pair/make_pair
Je pense que ça va aider. Ces sites sont de bonnes ressources pour C++ , bien que ce dernier semble être la référence préférée de nos jours.
revenue.Push_back(pair<string,double> ("String",map[i].second));
cela fonctionnera.
Vous pouvez utiliser std::make_pair
revenue.Push_back(std::make_pair("string",map[i].second));