STL的矢量调整大小

dre*_*eta 5 c++ stl vector

我找不到这条信息.我正处理一个奇怪的情况,我在一个循环中,我可以在任何给定的时间获得随机信息.该信息必须存储在矢量中.现在每个帧我必须设置这个向量,以确保我不会占用空间(我正在使用索引将值写入向量中的随机点).

现在假设没有办法改变这段代码,我想知道,如果我发送的参数恰好是向量的大小,那么向量是否"忽略"resize()函数?我在哪里可以找到这些信息?

小智 9

来自MSDN参考1

如果容器的大小小于请求的大小_Newsize,则元素将添加到向量,直到达到请求的大小.如果容器的大小大于请求的大小,则删除最靠近容器末尾的元素,直到容器达到_Newsize大小.如果容器的当前大小与请求的大小相同,则不执行任何操作

ISO C++标准(第485页2)指定了此行为vector::resize

void resize ( size_type sz , T c = T ());

if ( sz > size ())
  insert ( end () , sz - size () , c );
else if ( sz < size ())
  erase ( begin ()+ sz , end ());
else
; // Does nothing
Run Code Online (Sandbox Code Playgroud)

所以是的,矢量忽略了它,你不需要自己进行检查.