美文网首页
STL vector 清空的几种方法

STL vector 清空的几种方法

作者: SilentSummer | 来源:发表于2018-02-02 07:32 被阅读2919次
    vector<int> vecInt;
    for (int i = 0; i < 500; i++) {
        vecInt.push_back(i);
    }
    int capacity = vecInt.capacity();   //512
    int size = vecInt.size();           //500
    

    1. 直接赋值替换

    清空元素,但不回收空间

    vecInt = {501};
    int capacity = vecInt.capacity();   //512
    int size = vecInt.size();           //1
    

    2. clear()

    使用clear()成员函数,清空元素,但不回收空间

    vecInt.clear();
    int capacity = vecInt.capacity();   //512
    int size = vecInt.size();           //0
    

    3. erase()

    使用erase()成员函数,但需要使用迭代器逐个删除

    for (auto iter = vecInt.begin(); iter != vecInt.end(); ){
        iter = vecInt.erase(iter);
    }
    int capacity = vecInt.capacity();   //512
    int size = vecInt.size();           //0
    

    注意:erase()自动返回下一个元素的迭代器。

    4. swap()

    使用swap()成员函数,清除元素并回收内存

    vector<int>().swap(vecInt);     //清除容器并最小化其容量
    int capacity = vecInt.capacity();   //0
    int size = vecInt.size();           //0
    

    参考:

    1. 使用STL vector的几种清空容器(删除)办法

    相关文章

      网友评论

          本文标题:STL vector 清空的几种方法

          本文链接:https://www.haomeiwen.com/subject/vflszxtx.html