C++ vector清空元素的三種方法


#include <iostream>
#include <vector>

using namespace std;

//STL vector的幾種清空容器(刪除)辦法

void test()
{
    vector<int> vecnum;
    vecnum.push_back(1);
    vecnum.push_back(2);
    vecnum.push_back(3);
    vecnum.push_back(4);
    vecnum.push_back(5);
    vecnum.push_back(6);
    vecnum.push_back(7);

    //打印vector的大小和容量
    cout << "old: size = " << vecnum.size() << " ; capacity = " << vecnum.capacity() << endl;

    //1. clear(),清空元素,但不回收空間 //vecnum.clear();

    //2. 使用 erase循環刪除,結果同上 //vector<int>::iterator it;
    //for (it = vecnum.begin(); it != vecnum.end(); )
    //{
    //    //注意使用erase()方法時,迭代不要隨意的++
    //    it = vecnum.erase(it);
    //}

    //結論:erase在每次操作時,迭代器指針會整體前移1,就是每次都會移動全部數據,所以vector不適合做頻繁刪除的容器

    //3. 最簡單的使用swap,清除元素並回收內存 //3.1 寫法一

    //vector<int>().swap(vecnum);

    //3.2 寫法二
    vecnum.swap(vector<int>());

    //打印vector的大小和容量
    cout << "last: size = " << vecnum.size() << " ; capacity = " << vecnum.capacity() << endl;

}

int main()
{
    test();
    getchar();
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM