C++ 高性能开发之emplace_back

一、vector的emplace_back

  • push_back不同,emplace_back可以直接使用构造函数的参数,而不需要先创建一个临时对象,可以避免额外的拷贝或移动操作,从而提高性能
#include 
#include 
#include 

class Person {
public:
    Person(const std::string& name, int age) : name_(name), age_(age) {}
    // 成员变量可以直接用给定的值初始化,而不需要默认构造和后续赋值,性能更高
    /***
    Person(const std::string& name, int age) {
    this->name_ = name;
    this->age_ = age;
    }
    相比较这种性能差一点,因为有拷贝存在
    ***/
    void print() const {
        std::cout << "Name: " << name_ << ", Age: " << age_ << std::endl;
    }

private:
    std::string name_;
    int age_;
};

int main() {
    std::vector<Person> people;

    // 使用 emplace_back 直接构造 Person 对象,避免拷贝
    people.emplace_back("Alice", 30);
    people.emplace_back("Bob", 25);

    for (const auto& person : people) {
        person.print();
    }

    return 0;
}

你可能感兴趣的:(c++,开发语言,高性能开发)