Подтвердить что ты не робот

Добавление к вектору пары

У меня есть vector of pair, например:

vector<pair<string,double>> revenue;

Я хочу добавить строку и double из такой карты:

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

Но поскольку доход не инициализирован, возникает ошибка за пределами границ. Поэтому я попытался использовать vector::push_back следующим образом:

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

Но это говорит, что нельзя принимать два аргумента. Итак, как я могу добавить к этому vector из pair?

4b9b3361

Ответ 1

Используйте std::make_pair:

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

Ответ 2

IMHO, очень приятное решение - использовать функцию С++ 11 emplace_back:

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

Он просто создает новый элемент на месте.

Ответ 3

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

Но это говорит, что нельзя принимать два аргумента. Итак, как я могу добавить к этой векторной паре?

Вы на правильном пути, но подумайте об этом; что удерживает ваш вектор? Он, конечно, не содержит строку и int в одной позиции, она содержит Pair. Итак...

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

Ответ 5

Или вы можете использовать список инициализации:

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

Ответ 6

revenue.push_back(pair<string,double> ("String",map[i].second));

это будет работать.

Ответ 7

Вы можете использовать std::make_pair

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

Ответ 8

Попробуйте использовать другую временную пару:

pair<string,double> temp;
vector<pair<string,double>> revenue;

// Inside the loop
temp.first = "string";
temp.second = map[i].second;
revenue.push_back(temp);