c++

c++中emplace_back的用法是什么

小亿
153
2023-12-13 09:09:59
栏目: 编程语言

在C++中,emplace_back函数用于在容器的尾部直接构造一个新对象,并将其插入容器中。它是使用构造函数的参数来构造新对象,而不是使用拷贝构造函数或移动构造函数。

emplace_back函数通常用于在容器中插入新元素,避免了额外的拷贝或移动操作,提高了性能。

下面是emplace_back函数的用法示例:

#include <iostream>
#include <vector>

struct MyObject {
    int value;

    MyObject(int v) : value(v) {
        std::cout << "Construct: " << value << std::endl;
    }

    MyObject(const MyObject& other) : value(other.value) {
        std::cout << "Copy Construct: " << value << std::endl;
    }

    MyObject(MyObject&& other) noexcept : value(std::move(other.value)) {
        std::cout << "Move Construct: " << value << std::endl;
    }
};

int main() {
    std::vector<MyObject> myVector;

    myVector.emplace_back(1);
    myVector.emplace_back(2);
    myVector.emplace_back(3);

    return 0;
}

输出结果为:

Construct: 1
Construct: 2
Construct: 3

可以看到,emplace_back函数直接在容器中构造了新的MyObject对象,而不是通过拷贝或移动构造函数。这种方式避免了不必要的构造函数调用和拷贝操作,提高了性能。

0
看了该问题的人还看了