tun*_*nuz 3 c++ memory-management vector push-back
我有一段代码创建一个已知大小的std :: vector <T>:
std::vector<T> vectorOfTs(n);
Run Code Online (Sandbox Code Playgroud)
调用push_back会将大小增加到n + 1吗?
vectorOfTs.push_back(T());
Run Code Online (Sandbox Code Playgroud)
Meh*_*ari 19
是; 注意与... vector<T>.capacity()
不同vector<T>.size()
.后者表示当前在向量中的元素数,而前者表示适合当前为向量的内部缓冲区分配的空间的项数.
几乎.如果没有例外,size()
则会增加.
push_back(T())
也可以在各个阶段抛出一个例外:见这里,或简要地说:
T()
施工,在这种情况下不会发生呼叫push_back
,并且size()
不受影响
如果vector
需要增加容量,可能会抛出,在这种情况下size()
不受影响
的vector
元件将是复制或移动构建的使用std::allocator_traits<A>::construct(m, p, v);
,如果A
是std::allocator<T>
,那么这将调用以展示位置new
,如通过::new((void*)p) T(v)
:如果任何的,这将引发的vector
的size()
未受影响,除非*******
noexcept
不会抛出:在这种情况下,效果是未指定的向量更新然后完成 - size()
将增加并且值将在vector
(即使T::~T()
)
归档时间: |
|
查看次数: |
4945 次 |
最近记录: |