为了账号安全,请及时绑定邮箱和手机立即绑定

向量:调整大小()与std:载体:Reserve()

向量:调整大小()与std:载体:Reserve()

C++
慕虎7371278 2019-08-03 07:03:56
向量:调整大小()与std:载体:Reserve()中的注释部分中有一个线程。这个职位关于使用std::vector::reserve()v.V.std::vector::resize().这是原始代码:void MyClass::my_method(){     my_member.reserve(n_dim);     for(int k = 0 ; k < n_dim ; k++ )          my_member[k] = k ;}我相信在vector,正确的做法是打电话std::vector::resize(),不是std::vector::reserve().实际上,在VS 2010 SP1中调试构建中的以下测试代码“崩溃”:#include <vector>using namespace std;int main(){     vector<int> v;     v.reserve(10);     v[5] = 2;     return 0;}我是对的还是我错了?VS2010SP1是对的,还是错的?
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

有两种不同的方法是有原因的:

std::vector::reserve将分配内存,但不会调整矢量的大小,向量的逻辑大小将与以前相同。

std::vector::resize将实际修改矢量的大小,并在任何空间中填充处于默认状态的对象。如果它们是INT,它们都是零。

在保留之后,在您的情况下,您将需要大量的Push_back才能写入元素5。如果您不希望这样做,那么在您的情况下,您应该使用调整大小。



查看完整回答
反对 回复 2019-08-04
  • 3 回答
  • 0 关注
  • 370 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信