只有临时变量的修整过的容量,而这个临时变量则持有了曾经在ivec中的没用到的过剩容量。在这里(这个语句结尾),临时vector被销毁,因此释放了以前ivec使用的内存,收缩到合适。
3.用swap方法强行释放STL Vector所占内存 template < class T> void ClearVector( vector
vector
vector
/*或者{ std::vector
五、Vector 内存管理成员函数的行为测试
C++ STL的vector使用非常广泛,但是对其内存的管理模型一直有多种猜测,下面用实例代码测试来了解其内存管理方式,测试代码如下: #include
vector
cout << \容器大小为: \
cout << \容器容量为: \个元素,容器容量为1 iVec.push_back(1);
cout << \容器大小为: \
cout << \容器容量为: \个元素,容器容量为2 iVec.push_back(2);
cout << \容器大小为: \
cout << \容器容量为: \个元素,容器容量为4 iVec.push_back(3);
cout << \容器大小为: \
cout << \容器容量为: \个元素,容器容量为4 iVec.push_back(4); iVec.push_back(5);
cout << \容器大小为: \
cout << \容器容量为: \个元素,容器容量为8 iVec.push_back(6);
cout << \容器大小为: \
cout << \容器容量为: \个元素,容器容量为8 iVec.push_back(7);
cout << \容器大小为: \
cout << \容器容量为: \个元素,容器容量为8 iVec.push_back(8);
cout << \容器大小为: \
cout << \容器容量为: \个元素,容器容量为8 iVec.push_back(9);
cout << \容器大小为: \
cout << \容器容量为: \个元素,容器容量为16 /* vs2005/8 容量增长不是翻倍的,如 9个元素 容量9 10个元素容量13 */
/* 测试effective stl中的特殊的交换 swap() */
cout << \当前vector 的大小为: \cout << \当前vector 的容量为: \vector
cout << \临时的vector
六、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
销毁所有数据,释放内存。
相关推荐: