Fan*_*Fan 7 c++ performance c++11
这是我日常工作中的一段代码.我只想问你两种情况之间是否存在差异,特别是在性能方面.
std::vector< std::pair<std::string, std::string> > aVec;
// case 1
aVec.emplace_back("hello", "bonjour");
// case 2
aVec.emplace_back(std::pair("hello", "bonjour"));
Run Code Online (Sandbox Code Playgroud)
以下问题:
这两个案例的std :: list怎么样?
emplace_back将就地构造元素,传入的参数将完美地转发给元素的构造函数.
对于第一种情况,概念上只需要一个步骤,std::pair即将调用适当的构造函数来直接构造元素vector.
对于第二种情况,需要三个步骤; (1)将相应的构造函数调用构造一个临时的std::pair,(2)将元素vector从临时构造到就地构造std::pair,(3)临时std::pair销毁.
| 归档时间: |
|
| 查看次数: |
840 次 |
| 最近记录: |