std::vector---swap

来源:互联网 发布:淘宝上种草是什么意思 编辑:程序博客网 时间:2024/06/05 17:44

std::vector—swap

众所周知,vector占用内存在初始化时就已经分配好了,当内存不足时会重新分配并把之前的成员拷贝到新的内存中去。但是,比如当vector占用内存为1024字节时,erase()掉1020个字节,有效元素就只占用4个字节,并且剩下的1020个字节已经确定不会再使用时,就需要回收剩下没用的1020个字节了,这个vector对象占用空间还是为1024字节,clear()也是不行的,它会清除掉整个vector对象的内存,这时候就需要容器的swap()函数来回收vector对象没有使用的内存。

#include<iostream>#include <vector>void main(){    int x = 10;    std::vector<int> myvector(10000, x);    cout << "myvector size:"        << myvector.size()        << endl;    auto iter = myvector.begin();    iter++;    iter++;    iter++;    iter++;    while(iter != myvector.end()){        iter = myvector.erase(iter);    }    std::vector<int> vec;    vec.swap(myvector);    cout << "after swap :"        << vec.size()        << endl;    system("pause");    }
输出:myvector size:10000after swap :4

参考资料:
简单的程序诠释C++ STL算法系列之十五:swap

原创粉丝点击