[问题] vector push_back问题

楼主: asd15723 (asd15723)   2018-01-27 21:17:38
小弟是C++新手
想请问当int vector进行push_back前 size与capacity若一样 会如何配置空间
最近写作业有写到
例如
第一次push
size=1 capacity=1
第二次
size=2 capacity=2
.
.
第五次
size=5 capacity=6
.
.
第7次
size=7 capacity=9
小弟有在overflow爬到文章 有看到会以两倍计算(或是我英文不好)
但怎么想都不对
作者: Schottky (顺风相送)   2018-01-27 21:33:00
不用管这么多,只要知道 capacity 会自动长大就对了
楼主: asd15723 (asd15723)   2018-01-27 21:34:00
S 大 这是功课阿QQ 我们要自己写1个class然后 size capacity要跟原本的一样不对 应该是说 会有一组测资是用push_back出来的
作者: uranusjr (←這人是超級笨蛋)   2018-01-27 21:37:00
这什么烂功课, 出题的去甲赛啦
作者: Hazukashiine (私は幸せです)   2018-01-27 21:38:00
我写过这样的作业 我倒觉得算是蛮重要的你先不用去管其他的实作怎么样
楼主: asd15723 (asd15723)   2018-01-27 21:39:00
做出来的要跟测资一样 但我做的capacity不会自动长大
作者: Hazukashiine (私は幸せです)   2018-01-27 21:39:00
根据 C++ Standard 的要求 push_back 要达到amortized constant time complexity如此一来至少要是幂次增长来分配才可以
作者: uranusjr (←這人是超級笨蛋)   2018-01-27 21:44:00
教 reserve 是满重要的, 但是要求和 vector 一样就甲赛你要出就是直接给个 spec, 不是叫人去看 vector 行为
作者: Schottky (顺风相送)   2018-01-27 21:46:00
我同意 uranusjr,老师要不是讲明作业要求,就该说符合C++ spec 即可,而不是叫人去逆向工程或偷看原始码不过我还真没比较过各种不同实作是不是行为一模一样
作者: LPH66 (-6.2598534e+18f)   2018-01-27 22:02:00
我刚才看了一下我手上的 VS2017, 它确实是 1.5 倍成长原 PO 的例子正好就是这样长的: 1,2,3,4,6,9
作者: Hazukashiine (私は幸せです)   2018-01-27 22:08:00
作者: aa0917954358 (Doem)   2018-01-27 23:33:00
好熟悉的作业模式…是不是元X基哥程二作业啊 我都直接看VS STL实作 看得懂差很多有点好奇是谁 XD 根据我的经验 看懂VS STL ,在考试的时候可以直接翻来看 哈哈哈
作者: peatle ( ̄︶ ̄)/\( ̄︶ ̄)   2018-01-29 16:06:00
...问题是STL标准并没有说死capacity增长的方式,所以各家编译器各有巧妙,如果要做得和VS一样,原始码又摆在那边,
作者: Hazukashiine (私は幸せです)   2018-01-29 16:16:00
那就直接复制贴上就好了(误
作者: peatle ( ̄︶ ̄)/\( ̄︶ ̄)   2018-01-31 10:01:00
少推最后一行,楼上帮我补完了XD

Links booklink

Contact Us: admin [ a t ] ucptt.com