weixin_43888078
2020-04-04 21:24
采纳率: 50%
浏览 1.3k

求解 vector<int> &v = vector<int>(100);这种初始化方式

为什么这里可以直接用 vector < int >(100)的方式申请空间。这种写法的原理是什么?这块申请的空间是在堆区还是栈区?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • BugM 2020-04-06 19:01
    最佳回答

    这段代码应该会报错把,引用是不能用右值初始化的。vector(100) 是定义了一个匿名变量(也就是这个变量没有名字),这个变量只能作为右值。

    关于是堆上还是栈上的问题,这个临时变量是局部变量,所以是在栈上定义的,但是v里面的100个元素是在堆上的,这是vector类的设计问题。

    vector里面维护了三个迭代器,一个是first,一个是finish,一个是end_of_storage,分别指向begin(), end(),和最后一个元素的后一个位置,v中的元素都是存在堆上的

    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题