vector想必是每个C++程序员耳熟能详的数据结构 , 在实际编程中 , 使用vector尽管从效率上讲没有内置类型的数组高 , 但却不需要程序员自己管理内存 , 也不用担心数组的大小不够 , 还能进行各种各样的算法 , 还可以用迭代器实现与其它数据结构的交替 , 牺牲一点点效率换取这么多好处也是值得的。
下面我们对vector的内部数据结构进行解析 , 我们都知道vector是能够动态增长的 , 至于具体是怎么增长的 , 可写一个简单的程序试验一下:
vector<int> vi; //已导入vector头文件
cout << "number of member:" << vi.size() //该函数返回vector中元素个数
<< " capacity:" << vi.capacity() << endl; //该函数返回vector最大容量
for(int i = 0 ; i != 20 ; i++){
vi.push_back(i);
cout << "number of member:" << vi.size()
<< " capacity:" << vi.capacity() << endl;
}
这个程序的输出如下:
number of member:0 capacity:0
number of member:1 capacity:1
number of member:2 capacity:2
number of member:3 capacity:4