Ric*_*ard 48 c++ vector std-pair
我有一个vector的pair像这样的:
vector<pair<string,double>> revenue;
Run Code Online (Sandbox Code Playgroud)
我想在地图中添加一个字符串和一个double,如下所示:
revenue[i].first = "string";
revenue[i].second = map[i].second;
Run Code Online (Sandbox Code Playgroud)
但由于收入未初始化,因此出现了出界错误.所以我尝试使用vector::push_back这样的:
revenue.push_back("string",map[i].second);
Run Code Online (Sandbox Code Playgroud)
但那说不能采取两个论点.那么,如何可以添加到这个vector的pair?
ava*_*kar 96
revenue.push_back(std::make_pair("string",map[i].second));
Run Code Online (Sandbox Code Playgroud)
m47*_*47h 32
恕我直言,一个非常好的解决方案是使用c ++ 11 emplace_back函数:
revenue.emplace_back("string", map[i].second);
Run Code Online (Sandbox Code Playgroud)
它只是创建了一个新元素.
Ed *_* S. 10
revenue.pushback("string",map[i].second);
Run Code Online (Sandbox Code Playgroud)
但那说不能采取两个论点.那么我该如何添加到这个矢量对呢?
你是在正确的道路上,但想一想; 你的载体有什么作用?它肯定没有一个字符串和一个int在一个位置,它拥有一个Pair.所以...
revenue.push_back( std::make_pair( "string", map[i].second ) );
Run Code Online (Sandbox Code Playgroud)
或者您可以使用初始化列表:
revenue.push_back({"string", map[i].second});
Run Code Online (Sandbox Code Playgroud)
阅读以下文档:
http://cplusplus.com/reference/std/utility/make_pair/
要么
http://en.cppreference.com/w/cpp/utility/pair/make_pair
我认为这会有所帮助.这些网站是C++的良好资源,尽管后者似乎是目前的首选参考.
| 归档时间: |
|
| 查看次数: |
167138 次 |
| 最近记录: |