vector.push_back(vector.back()+1) 是未定义的行为吗?

Is vector.push_back(vector.back()+1) undefined behavior?

我想将一个新值附加到 C++ std::vector,这个新值是相对于向量中最后一个值的。此代码会导致未定义的行为吗?

std::vector<int> vector;
vector.push_back(1);
vector.push_back(vector.back() + 1);

vector 不为空,因此您不会因此调用未定义的行为。

push_back 的参数在调用之前被完全评估,因此这也不是未定义的行为。