deque 整理筆記

/*
 * deque內部會維護一個map(注意!不是STL中的map容器).
 * 即一小塊連續的空間,該空間中每個元素都是指針,指向另一段(較大的)區域.
 * 這個區域稱爲緩衝區,緩衝區用來保存 deque 中的數據.
 * 因此deque在隨機訪問和遍歷數據會比vector慢.
 * deque頭尾兩端分別做插入和刪除操作都是常數時間.
 *
*/
#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;

int main() {
    deque<int> dq1;
    for(int i = 0; i < 5; i++)
        dq1.push_back(i + 1);
    for(int i = 0; i < dq1.size(); i++)
        cout << dq1[i] << " ";
    cout << endl;

    dq1.push_back(6);
    dq1.push_front(0);
    for(int i = 0; i < dq1.size(); i++)
        cout << dq1[i] << " ";
    cout << endl;

    dq1.pop_back();
    dq1.pop_front();
    for(int i = 0; i < dq1.size(); i++)
        cout << dq1[i] << " ";
    cout << endl;



    dq1.push_back(61);
    dq1.push_back(63);
    dq1.push_back(65);

    for(auto ptr = dq1.begin(); ptr != dq1.end(); ptr++)
        cout << *ptr << " ";
    cout << endl;

    if(!dq1.empty()) {
        auto pos = find(dq1.begin(), dq1.end(), 63);
        if(pos != dq1.end())
            cout << *pos << endl;
    }

    return 0;
}

// 對於deque和vector來說,儘量少用erase(pos)和erase(beg,end).
// 因爲這在中間刪除數據後會導致後面的數據向前移動,從而使效率低下.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章