添加到对的向量

问题描述 投票:45回答:8

我有像这样的vector 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

c++ vector std-pair
8个回答
93
投票

使用std::make_pair

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

30
投票

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

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

它只是创建了一个新元素。


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

但那说不能采取两个论点。那么我该如何添加到这个矢量对呢?

你是在正确的道路上,但想一想;你的载体有什么作用?它肯定没有一个字符串和一个int在一个位置,它持有Pair。所以...

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

6
投票

阅读以下文档:

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

要么

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

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


6
投票

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

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

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

这会奏效。


0
投票

你可以使用std::make_pair

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

-1
投票

尝试使用另一个临时对:

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

// Inside the loop
temp.first = "string";
temp.second = map[i].second;
revenue.push_back(temp);
© www.soinside.com 2019 - 2024. All rights reserved.