建站 网站程序有哪些,镇江城乡建设网站首页,互联网公司网站建设,旅游网站案例一.vector互换容器
功能描述:实现两个容器内元进行互换 函数原型: swap(vec); //将vec与本身的元素互换
实例:
//1.基本使用
void test01()
{vectorintv1;for (int i 0; i 10; i){v1.push_back(i);}cout 交换前: e…一.vector互换容器
功能描述:实现两个容器内元进行互换 函数原型: swap(vec); //将vec与本身的元素互换
实例:
//1.基本使用
void test01()
{vectorintv1;for (int i 0; i 10; i){v1.push_back(i);}cout 交换前: endl;printVertor(v1);vectorintv2;for (int i 10; i 0; i--){v2.push_back(i);}printVertor(v2);cout 交换后: endl;v1.swap(v2);//将vec与本身的元素互换printVertor(v1);printVertor(v2);}//2.实际用途
//巧用swap可以收缩内存空间
void test02()
{vectorintv;for (int i 0; i 100000; i){v.push_back(i);}cout v的容量为: v.capacity()endl;cout v的大小为: v.size() endl;v.reserve(3);//重新指定大小 指定完大小变了,容量不变 所以导致占正很大的容量cout v的容量为: v.capacity() endl;cout v的大小为: v.size() endl;//巧用swap收缩内存vectorint(v).swap(v);cout v的容量为: v.capacity() endl;cout v的大小为: v.size() endl;/*vectorint(v).swap(v); 原理:可以把上面代码看成两段1.vectorint(v) 2.swap(v)第一段vectorint(v) :匿名对象,相当于调用拷贝构造函数利用v创建了一个新的对象,且该对象没有名,他会利用v目前所占的元素个数来初始化这个匿名对象的大小第二段swap(v) :相当于进行了容器之间的交换 在这里实现了v与匿名对象互换了指向的容器注:匿名对象在当前行执行完就会被编译器回收,所以不会出现占用内存的情况*/
}
总结:swap可以使两个容器互换,可以达到实用的收缩内存效果
二.vector预留空间
功能描述:减少vector在动态扩展容量时的扩展次数 函数原型: reserve(int len); //容器预留len个元素长度,预留位置不初始化,元素不可访问.
实例:
void test01()
{vectorintv;//利用reserve预留空间v.reserve(100000);int num 0;//统计开辟次数int* p NULL;for (int i 0; i 100000; i){v.push_back(i);if (p ! v[0]){//如果指针p的指向不是首地址那么就让p指向首地址p v[0];num;//记录动态开辟空间的次数}}cout num num endl;
}
总结:如果数据量较大,可以一开始利用reserve预留空间
仅个人看视频笔记与理解,如有误可指出谢谢