在C++ Primer 3E中读到一段:
#include <vector>
#include <iostream>
using namespace std;//这个是我自己加的
int main()
{
vector< int > ivec;
cout << "ivec: size: " << ivec.size()
<< " capacity: " << ivec.capacity() << endl;
for ( int ix = 0; ix < 24; ++ix ) {
ivec.push_back( ix );
cout << "ivec: size: " << ivec.size()
<< " capacity: " << ivec.capacity() << endl;
}
cin.get();//这个是我自己加的
}
运行结果:
ivec: size: 0 capacity: 0
ivec: size: 1 capacity: 1
ivec: size: 2 capacity: 2
ivec: size: 3 capacity: 4
ivec: size: 4 capacity: 4
ivec: size: 5 capacity: 8
ivec: size: 6 capacity: 8
ivec: size: 7 capacity: 8
ivec: size: 8 capacity: 8
ivec: size: 9 capacity: 16
ivec: size: 10 capacity: 16
ivec: size: 11 capacity: 16
ivec: size: 12 capacity: 16
ivec: size: 13 capacity: 16
ivec: size: 14 capacity: 16
ivec: size: 15 capacity: 16
ivec: size: 16 capacity: 16
ivec: size: 17 capacity: 32
ivec: size: 18 capacity: 32
ivec: size: 19 capacity: 32
ivec: size: 20 capacity: 32
ivec: size: 21 capacity: 32
ivec: size: 22 capacity: 32
ivec: size: 23 capacity: 32
ivec: size: 24 capacity: 32
此书的下文:
在Rogue Wave 实现版本下在ivec 的定义之后它的长度和容量都是0 但是在插入
第一个元素之后ivec 的容量是256 长度为1 这意味着在ivec 下一次需要增长之前我
们可以向它加入256 个元素当我们插入第256 个元素时vector 以下列方式重新自我增长
它分配双倍于当前容量的存储区把当前的值拷贝到新分配的内存中井释放原来的内存
正如稍后我们将要看到的同list 相比数据类型越大越复杂则vector 的效率也就越低
我的问题是:
1. 什么是Rogue Wave 版本?
2. 为什么在我的机器上运行的结果,capacity不是256呢?
谢谢大家的宝贵时间!
[此贴子已经被作者于2006-9-19 12:57:05编辑过]