如果 std::vector::resize 的大小参数等于当前大小怎么办?

You*_*008 3 c++ containers vector dynamic-memory-allocation

阅读有关 vector::resize 的手册http://www.cplusplus.com/reference/vector/vector/resize/

它只说明了尺寸更大或更小时会发生什么,但没有说明尺寸相等时会发生什么。是否保证在大小相同时不会重新分配数组并使迭代器无效?

我想避免一个分支并只处理 2 种情况(>= 或 <)而不是 3 种(< 或 > 或 ==),但如果未定义调整大小到相同大小,那么我也必须检查该情况。

Zer*_*ges 5

这可能只是链接参考中的错误。该标准规定如下

void resize(size_type sz);

效果:如果,则删除序列中的sz < size()最后一个元素。size() - sz否则,将sz - size()默认插入的元素附加到序列中。

因为在你的情况sz - size()0,它没有做任何事情。