emplace_back与push_back异同
时间: 2023-12-08 21:05:59 浏览: 90
emplace_back和push_back都是向vector中添加元素的方法,但是它们的实现方式略有不同。
push_back方法会将一个元素的副本添加到vector的末尾,而emplace_back方法则是在vector的末尾直接构造一个新元素。因此,使用emplace_back方法可以避免不必要的拷贝操作,提高程序效率。
举个例子,如果我们有一个存储了Person对象的vector,我们可以使用push_back方法添加一个新的Person对象:
```
std::vector<Person> people;
Person p("Alice", 20);
people.push_back(p);
```
这里,我们首先创建了一个Person对象p,然后将其添加到vector中。由于push_back方法需要将p对象拷贝一份,因此会调用Person类的拷贝构造函数。
如果我们使用emplace_back方法添加新元素,就可以避免这个拷贝操作:
```
std::vector<Person> people;
people.emplace_back("Alice", 20);
```
这里,我们直接在vector的末尾构造了一个新的Person对象,而不需要先创建一个临时对象再拷贝。
相关问题
emplace_back和push_back
emplace_back 是 C++ STL 中 vector 的一个成员函数,它可以在 vector 的末尾添加一个元素,并且可以在添加元素的同时进行构造。这意味着它可以避免一些额外的复制操作,从而提高性能。
push_back 是 STL 中 vector 的一个成员函数,它也是在 vector 的末尾添加一个元素,但是它只能添加已经存在的元素或对象的拷贝。
总的来说 emplace_back 是 push_back 的一种更高效的替代方案,因为它可以避免不必要的复制操作。
用emplace_back还是push_back
emplace_back 是 C++ STL 中 vector 的一个成员函数,它可以在 vector 的末尾添加一个元素,并且可以在添加元素的同时进行构造。这意味着它可以避免一些额外的复制操作,从而提高性能。
push_back 是 STL 中 vector 的一个成员函数,它也是在 vector 的末尾添加一个元素,但是它只能添加已经存在的元素或对象的拷贝。
总的来说 emplace_back 是 push_back 的一种更高效的替代方案,因为它可以避免不必要的复制操作。
阅读全文