llenar - vector pair c++
Agregar a un vector de par (7)
Tengo un vector
de pair
como ese:
vector<pair<string,double>> revenue;
Quiero agregar una cadena y un doble de un mapa como este:
revenue[i].first = "string";
revenue[i].second = map[i].second;
Pero dado que los ingresos no se inicializan, aparece un error fuera de límites. Así que traté de usar vector::push_back
así:
revenue.push_back("string",map[i].second);
Pero eso dice que no puede tomar dos argumentos. Entonces, ¿cómo puedo agregar a este vector
de pair
?
En mi humilde opinión, una solución muy buena es usar la función c ++ 11 emplace_back :
revenue.emplace_back("string", map[i].second);
Simplemente crea un nuevo elemento en su lugar.
Intenta usar otro par temporal:
pair<string,double> temp;
vector<pair<string,double>> revenue;
// Inside the loop
temp.first = "string";
temp.second = map[i].second;
revenue[i].push_back(temp);
Lea la siguiente documentación:
http://cplusplus.com/reference/std/utility/make_pair/
o
Creo que eso ayudará. Esos sitios son buenos recursos para C ++ , aunque este último parece ser la referencia preferida en estos días.
O puede usar la lista de inicialización:
revenue.push_back({"string", map[i].second});
Use std::make_pair
:
revenue.push_back(std::make_pair("string",map[i].second));
revenue.push_back(pair<string,double> ("String",map[i].second));
esto funcionará
revenue.pushback("string",map[i].second);
Pero eso dice que no puede tomar dos argumentos. Entonces, ¿cómo puedo agregar a este par de vectores?
Estás en el camino correcto, pero piénsalo; ¿Qué contiene tu vector? Ciertamente no tiene una cadena y un int en una posición, contiene un Pair
. Asi que...
revenue.push_back( std::make_pair( "string", map[i].second ) );