C ++-添加到pai的向量中

我有pairvector,例如:

vector<pair<string,double>> revenue;

我想从像这样的地图中添加一个字符串和一个双精度型:

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

但是,由于未初始化收入,因此出现了超出范围的错误。 所以我尝试像这样使用vector

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

但这不能接受两个论点。 那么我如何添加到pairvector中呢?

Richard asked 2020-02-13T20:45:32Z
8个解决方案
94 votes

使用std::make_pair

revenue.push_back(std::make_pair("string",map[i].second));
avakar answered 2020-02-13T20:45:45Z
32 votes

恕我直言,一个非常好的解决方案是使用c ++ 11 emplace_back函数:

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

它只是在适当位置创建一个新元素。

m47h answered 2020-02-13T20:46:10Z
10 votes
revenue.pushback("string",map[i].second);

但这不能接受两个论点。 那么如何添加到这个向量对呢?

您走的路是正确的,但请考虑一下; 你的向量是什么? 它当然不会在一个位置上容纳字符串和整数,而是容纳Pair。所以...

revenue.push_back( std::make_pair( "string", map[i].second ) );     
Ed S. answered 2020-02-13T20:46:35Z
7 votes

或者您可以使用初始化列表:

revenue.push_back({"string", map[i].second});
Hsu Hau answered 2020-02-13T20:46:55Z
6 votes

阅读以下文档:

[http://cplusplus.com/reference/std/utility/make_pair/]

要么

[http://en.cppreference.com/w/cpp/utility/pair/make_pair]

我认为这会有所帮助。 这些站点是C ++的良好资源,尽管近来后者似乎是首选的参考。

hochl answered 2020-02-13T20:47:32Z
3 votes
revenue.push_back(pair<string,double> ("String",map[i].second));

这将起作用。

Caner SAYGIN answered 2020-02-13T20:47:52Z
0 votes

您可以使用std::make_pair

revenue.push_back(std::make_pair("string",map[i].second));
Sardeep Lakhera answered 2020-02-13T20:48:12Z
-1 votes

尝试使用另一个临时对:

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

// Inside the loop
temp.first = "string";
temp.second = map[i].second;
revenue.push_back(temp);
Dheeraj Kumar answered 2020-02-13T20:48:31Z
translate from https://stackoverflow.com:/questions/7897050/adding-to-a-vector-of-pair