iVec.push_back(8);cout << "容器 大小为: " << iVec.size() << endl;cout << "容器 容量为: " << iVec.capacity() << endl; //8个元素, 容器容量为8
iVec.push_back(9);cout << "容器 大小为: " << iVec.size() << endl;cout << "容器 容量为: " << iVec.capacity() << endl; //9个元素, 容器容量为16/* vs2005/8 容量增长不是翻倍的,如 9个元素 容量9 10个元素 容量13 */
/* 测试effective stl中的特殊的交换 swap() */cout << "当前vector 的大小为: " << iVec.size() << endl;cout << "当前vector 的容量为: " << iVec.capacity() << endl;vector
cout << "临时的vector
return 0;}
6.vector的其他成员函数
c.assign(beg,end):将[beg; end)区间中的数据赋值给c。 c.assign(n,elem):将n个elem的拷贝赋值给c。 c.at(idx):传回索引idx所指的数据,如果idx越界,抛出out_of_range。 c.back():传回最后一个数据,不检查这个数据是否存在。 c.front():传回地一个数据。 get_allocator:使用构造函数返回一个拷贝。 c.rbegin():传回一个逆向队列的第一个数据。 c.rend():传回一个逆向队列的最后一个数据的下一个位置。 c.~ vector
7.备注:在用vector的过程中的一些问题,特此列出讨论:
1)
vector
int b = 5;
a.push_back(b);
此时若对b另外赋值时不会影响a[0]的值
2)
vector 此时输出的值并不是一开始b数组初始化的值,而是一些无法预计的值. 分析:根据1) 2)的结果,可以想到,在1)中,往a向量中压入的是b的值,即a[0]=b,此时a[0]和b是存储在两个不同的地址中的.因此改变b的值不会影响a[0];而在2)中,因为是把一个地址(指针)压入向量a,即a[0]=b,因此释放了b的地址也就释放了a[0]的地址,因此a[0]数组中存放的数值也就不得而知了.