使用 `vec.push_back(vec.back());` 安全吗?

问题描述 投票:0回答:1

我注意到

vector<T>::push_back
的参数是
const T&
。我知道当我调用push_back时可能会发生重新分配,但是
vector<T>::back
返回一个引用。那么安全吗?

vector<string> s;
// insert something...
s.push_back(s.back());
c++ stdvector
1个回答
0
投票

如果您之前做过

s.reserve(s.size() + 1)
,那么就安全了,这样就保证不会发生重新分配。

如果您不知道当前容量,则无法控制是否会进行搬迁,这是未定义的行为。

s.push_back(string{s.back()});
另一方面又安全了。

© www.soinside.com 2019 - 2024. All rights reserved.