C++ STL Deque

C++ STL Deque,第1张

C++ STL Deque 源文件
#include 
#include 
#include 
#include 
using namespace std;



void printDeque(deque d){
    for (auto it = d.cbegin();it < d.cend();it ++){
        cout << *it<< " ";
    }
    cout << endl;
}

void dequeContructor(){
    //way1
    deque d0;
    deque d1 {5,4,3};
    printDeque(d1);
    //way2
    deque d2(5);
    printDeque(d2);
    //way3
    deque d3(5,10);
    printDeque(d3);
    //way4
    deque d4(d2);
    printDeque(d4);
    //way5
    array arr {11,22,33,44,55};
    deque d5(arr.data()+2,arr.data()+4);
    printDeque(d5);
}

void printValue(int value){
    cout << value << " ";
}
void dequeTraverse() {
    deque d1 {5,6,7,8,9};
    //way1
    auto it = d1.cbegin();
    while (it != d1.cend())
    {
        cout << *it << " ";
        it ++;
    }
    cout << endl;
    //way2
    for (auto it = d1.rbegin(); it < d1.rend();it ++){
        if (*it == 7){
            *it =88;
        }
        cout << *it << " ";
    }
    cout << endl;
    //way3
    for (auto value : d1){
        cout << value << " ";
    }
    cout << endl;
    //way4
    for_each(d1.crbegin(),d1.crend(),printValue); 
    cout << endl;

}

void dequeAcess(){
    deque d {5,6,7,8,9};
    cout << d[2] << endl; //way1
    d.at(3) = 99;         //way2
    cout << d.front() << "~" << d.back() << endl; //way3
    //cout << d.data() << endl;  deque没有data();
}

void dequeInsertDelete(){

    dequed;
    //调用push_back()向容器尾部添加数据。
    d.push_back(2); //{2}
    //调用pop_back()移除容器尾部的一个数据。
    d.pop_back(); //{}
    //调用push_front()向容器头部添加数据。
    d.push_front(2);//{2}
    //调用pop_front()移除容器头部的一个数据。
    d.pop_front();//{}
    //调用 emplace 系列函数,向容器中直接生成数据。
    d.emplace_back(2); //{2}
    d.emplace_front(3); //{3,2}
    //emplace() 需要 2 个参数,第一个为指定插入位置的迭代器,第二个是插入的值。
    d.emplace(d.begin() + 1, 4);//{3,4,2}
    for (auto i : d) {
        cout << i << " ";
    }
    //erase()可以接受一个迭代器表示要删除元素所在位置
    //也可以接受 2 个迭代器,表示要删除元素所在的区域。
    d.erase(d.begin());//{4,2}
    d.erase(d.begin(), d.end());//{},等同于 d.clear()

    std::deque d2{ 1,2 };
    //第一种格式用法
    d2.insert(d2.begin() + 1, 3);//{1,3,2}
    //第二种格式用法
    d2.insert(d2.end(), 2, 5);//{1,3,2,5,5}
    //第三种格式用法
    std::arraytest{ 7,8,9 };
    d2.insert(d2.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
    //第四种格式用法
    d2.insert(d2.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
    for (int i = 0; i < d2.size(); i++) {
        cout << d2.at(i) << " ";
    }
    cout << endl;
}



int main(){
    // dequeContructor();
    // dequeTraverse();
    dequeInsertDelete();
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5618907.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存