emplace_back 用法
时间: 2023-08-01 16:08:13 浏览: 110
C++ 中"emplace_back" 与 "push_back" 的区别
`emplace_back` 是 C++ STL 中 `vector` 的一个成员函数,用于在 vector 的末尾构造一个新元素。
与 `push_back` 不同的是,`emplace_back` 通过在容器的末尾直接构造对象,而不是将一个对象插入向量中。这使得 `emplace_back` 更加高效,因为它避免了在向量中创建临时对象的开销。
`emplace_back` 的语法如下:
```c++
template <class... Args>
void emplace_back(Args&&... args);
```
参数 `Args` 可以是任意类型,用于传递给新元素的构造函数。例如,如果 `vector` 存储的是 `std::pair<int, std::string>`,则可以使用以下代码调用 `emplace_back`:
```c++
vec.emplace_back(42, "hello");
```
这将在 `vector` 的末尾构造一个 `std::pair<int, std::string>`,其中第一个元素为 `42`,第二个元素为 `"hello"`。
总之,`emplace_back` 的好处在于提高了性能并减少了内存分配,同时也可以更方便地构造和插入新元素。
阅读全文