Had*_*adi 7 c++ resize stdvector
resize() 根据给定的大小添加/删除元素。Reserve() 保留内存空间,它不会重新分配内存。我的问题是 resize 是否也与向量的容量相同,只是不会增加?
要添加,将组合:
std::vector<X> vector;
vector.reserve(5);
vector.resize(5);
Run Code Online (Sandbox Code Playgroud)
有道理吗?是多余的吗?这里的目标是能够覆盖向量中的值,而无需向量分配任何额外空间。
从这个网站:
resize():这使您可以将矢量的大小更改为您想要的任何大小。
reserve():这会改变向量的容量。请注意,这不会更改向量的大小,它只会更改底层缓冲区的大小,以便在必须调整缓冲区大小之前为缓冲区的扩展提供更多空间。与调用不同resize(),这不会改变程序的行为,只会改变性能(保留空间的后续使用不会因增量保留而导致性能损失)。
我的问题是 resize 是否也与向量的容量相同,只是不会增加?要添加,将组合:
Run Code Online (Sandbox Code Playgroud)std::vector<X> vector; vector.reserve(5); vector.resize(5);有道理吗?是多余的吗?
vector.reserve(5); 在这种情况下将是多余的。
这里的目标是能够覆盖向量中的值,而无需向量分配任何额外空间。
对于这个目标,它取决于你想如何覆盖这些值。
resize().push_back(),那么reserve()会更好,这样您就可以避免创建X两次。请记住,用于自动预订的算法是实现定义的。有关性能方面的更多信息,请参见此处。
| 归档时间: |
|
| 查看次数: |
8262 次 |
| 最近记录: |