这段代码
#include <iostream>
#include <vector>
struct obj
{
std::string name;
int age;
float money;
obj():name("NO_NAME"),age(0),money(0.0f){}
obj(const std::string& _name, const int& _age, const float& _money):name(_name),age(_age),money(_money){}
obj(obj&& tmp): name(tmp.name), age(tmp.age), money(tmp.money) {}
obj& operator=(obj&&) {return *this;}
};
int main(int argc, char* argv[])
{
std::vector<obj> v;
for( int i = 0; i < 5000000; ++i )
{
v.emplace_back(obj("Jon", 45, 500.6f));
}
return(0);
}
比同等速度慢大约 2 倍v.push_back(obj("Jon", 45, 500.6f));
,我不明白为什么。
我已经用 botg++ 4.7.2
和clang++ 3.3
.
我哪里错了?
现在我已经更正了我的移动构造函数,我将添加更多
我正在使用time
Linux 下的实用程序测试这 2 并使用
g++-4.7 -std=c++11 -s -O3 -DNDEBUG
或者
clang++ -std=c++11 -s -O3 -DNDEBUG