📅  最后修改于: 2023-12-03 14:39:38.141000             🧑  作者: Mango
在C++中,STL(标准模板库)向量是一种非常常用的序列容器,它可以在运行时自动调整大小。在向向量中添加元素时,有两种常用的方法:push_back() 和 emplace_back()。
push_back()
方法可以将给定元素添加到向量的末尾。该方法的常规用法如下所示:
vector<int> v;
v.push_back(10);
v.push_back(20);
在上面的代码中,我们首先声明了一个整数向量v
,然后使用push_back()
方法向向量中添加元素。第一次使用push_back()
方法添加了整数10
,第二次使用该方法添加了整数20
。
这种方法的优点是它可以添加任何类型的元素。但是,它需要构造对象,并插入再次复制构造的元素。这可能会导致程序的性能下降(尤其是在添加大量元素时)。
emplace_back()
方法与push_back()
方法类似,但是它允许您直接在向量末尾就地构造元素。使用此方法可以更高效地添加元素。以下是使用emplace_back()
方法的代码示例:
vector<pair<int, int>> v;
v.emplace_back(10, 20);
在上面的代码中,我们声明了一个pair类型的向量v
,然后使用emplace_back()
方法将元素10
和20
作为pair类型的向量直接添加到向量末尾。
这种方法的优点是它避免了不必要的构造和拷贝操作,从而可以提高程序的性能。但是,它仅限于可以直接构造的元素类型。
在大多数情况下,使用emplace_back()
方法可以更好地添加元素,因为它可以更高效地添加元素。但是,如果您需要添加不能直接构造的元素类型,或者您需要将元素添加到向量的中间位置,那么使用push_back()
将更加方便。