push_back vs emplace_back:区别与选择
各位同行,大家好!我是一名初学C++的开发者,最近遇到了一个难题:什么时候用push_back,什么时候用emplace_back?
我有一个简单的类:
```cpp
class MyClass {
public:
MyClass(int x, int y) : x_(x), y_(y) {}
private:
int x_, y_;
};
```
我通过两种方式向vector添加对象:
```cpp
std::vector vec;
// 方式1
vec.push_back(MyClass(10, 20));
// 方式2
vec.emplace_back(10, 20);
```
两种方式都能工作,但我听说emplace_back更快。这有多重要?有没有push_back更优的情况?还是说emplace_back总是更好?
我特别关心:临时对象、move语义和拷贝时会发生什么?网上信息矛盾很多,希望能从经验丰富的开发者那里得到明确的答案。谢谢!
<<>>
主要区别:对象在哪里创建
push_back和emplace_back的主要区别在于对象的创建位置。