我注意到
vector<T>::push_back
的参数是const T&
。我知道当我调用push_back时可能会发生重新分配,但是vector<T>::back
返回一个引用。那么安全吗?
vector<string> s;
// insert something...
s.push_back(s.back());
如果您之前做过
s.reserve(s.size() + 1)
,那么就安全了,这样就保证不会发生重新分配。
如果您不知道当前容量,则无法控制是否会进行搬迁,这是未定义的行为。
s.push_back(string{s.back()});
另一方面又安全了。