2010-07-01 25 views
3

我知道deque和vector都预留了一些增长空间。 vector :: capacity()能够获得向量的内部保留空间。 Deque在标准中没有这样的成员。有什么方法可以获取这些信息吗?有没有办法让vector的内部存储大小为vector :: capacity?

+1

又见香草萨特的[大师的周#54:使用vector和deque(HTTP ://www.gotw.ca/gotw/054.htm)。 – 2010-07-01 14:07:12

+0

我读了那章。在现实中可能没有理由让deque的能力,但我只是好奇。 – Dingle 2010-07-01 14:24:47

+0

你想知道什么能力?在向量中,很明显,增长是一个相当昂贵的操作,其中所有现有对象必须移动到内存中的不同位置,但出队增长并不昂贵。那就是:容量是它在成长之前能够容纳多少元素变得痛苦。这只适用于矢量。 – 2010-07-01 15:01:34

回答

6

不可移植。没有capacity成员deque的原因是因为它不使用连续内存。没有理由,性能明智地考虑它。

7

你必须深入实施才能弄清楚。 gcc 4.1.1附带的std::deque版本似乎以512字节块分配内存。但就我看到所有下划线和C型表演到size_t 15分钟后,我得到了。然后,我遇到了这个评论:

最初的底层内存布局是一个有点复杂......

+2

+1我喜欢这样的评论 – Patrick 2010-07-01 15:04:22

相关问题