作者asd15723 (asd15723)
看板C_and_CPP
标题[问题] vector push_back问题
时间Sat Jan 27 21:17:38 2018
小弟是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爬到文章 有看到会以两倍计算(或是我英文不好)
但怎麽想都不对
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 39.12.37.112
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1517059063.A.064.html
1F:→ Schottky: 不用管这麽多,只要知道 capacity 会自动长大就对了 01/27 21:33
2F:→ asd15723: S 大 这是功课阿QQ 我们要自己写1个class 01/27 21:34
3F:→ asd15723: 然後 size capacity要跟原本的一样 01/27 21:34
4F:→ asd15723: 不对 应该是说 会有一组测资是用push_back出来的 01/27 21:36
5F:→ uranusjr: 这什麽烂功课, 出题的去甲赛啦 01/27 21:37
6F:推 Hazukashiine: 我写过这样的作业 我倒觉得算是蛮重要的 01/27 21:38
7F:→ Hazukashiine: 你先不用去管其他的实作怎麽样 01/27 21:38
8F:→ asd15723: 做出来的要跟测资一样 但我做的capacity不会自动长大 01/27 21:39
9F:→ Hazukashiine: 根据 C++ Standard 的要求 push_back 要达到 01/27 21:39
10F:→ Hazukashiine: amortized constant time complexity 01/27 21:39
11F:→ Hazukashiine: 如此一来至少要是幂次增长来分配才可以 01/27 21:40
12F:→ uranusjr: 教 reserve 是满重要的, 但是要求和 vector 一样就甲赛 01/27 21:44
13F:→ uranusjr: 你要出就是直接给个 spec, 不是叫人去看 vector 行为 01/27 21:45
14F:→ Schottky: 我同意 uranusjr,老师要不是讲明作业要求,就该说符合 01/27 21:46
15F:→ Schottky: C++ spec 即可,而不是叫人去逆向工程或偷看原始码 01/27 21:47
教授是数学系毕业 奇葩作业不少QQ
16F:→ Schottky: 不过我还真没比较过各种不同实作是不是行为一模一样 01/27 21:51
https://imgur.com/a/K9wFk
这个是程式码片段,equal会比较size,capacity,值
※ 编辑: asd15723 (39.12.37.112), 01/27/2018 22:06:31
17F:推 LPH66: 我刚才看了一下我手上的 VS2017, 它确实是 1.5 倍成长 01/27 22:02
18F:→ LPH66: 原 PO 的例子正好就是这样长的: 1,2,3,4,6,9 01/27 22:04
3q,这样就有着落了!
※ 编辑: asd15723 (39.12.37.112), 01/27/2018 22:09:31
20F:→ aa0917954358: 好熟悉的作业模式…是不是元X基哥程二作业啊 我都 01/27 23:33
21F:→ aa0917954358: 直接看VS STL实作 看得懂差很多 01/27 23:33
4 被抓到惹
※ 编辑: asd15723 (39.12.37.112), 01/27/2018 23:43:02
22F:→ aa0917954358: 有点好奇是谁 XD 根据我的经验 看懂VS STL ,在考试 01/27 23:51
23F:→ aa0917954358: 的时候可以直接翻来看 哈哈哈 01/27 23:51
1B 菜B巴 上学期期末就直接右键查看定义.....
※ 编辑: asd15723 (39.12.37.112), 01/28/2018 00:31:59
24F:→ aa0917954358: 这麽刚好 我2B的 XD 01/28 05:58
25F:推 peatle: ...问题是STL标准并没有说死capacity增长的方式,所以各家 01/29 16:06
26F:→ peatle: 编译器各有巧妙,如果要做得和VS一样,原始码又摆在那边, 01/29 16:06
27F:→ Hazukashiine: 那就直接复制贴上就好了(误 01/29 16:16
28F:推 peatle: 少推最後一行,楼上帮我补完了XD 01/31 10:01