Avatar ·

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的主要区别在于对象的创建位置。