容器:deque

以下是对于deque容器知识的整理
1、构造
2、赋值
3、大小操作
4、插入
5、删除
6、数据存取
7、排序

#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;
/*
deque容器:双端数组,可以对头端进行插入删除操作
deque与vector的区别:
    deque对于头部的插入和删除效率更高
    vector访问元素的速度更快
*/

/*
void printDeque(const deque<int> deq) // 传入只读deque,避免被修改
{
    for(deque<int>::const_iterator it = ...) // 迭代器要用const_iterator
    {
        cout <<  ...
    }
}
*/
void printDeque(deque<int> deq)
{
    for(deque<int>::iterator it = deq.begin(); it!=deq.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}


// deque构造
void test01()
{
    deque<int> deq1;
    deq1.push_back(1);
    deq1.push_back(2);
    deq1.push_back(3);
    printDeque(deq1);

    deque<int> deq2(deq1);
    printDeque(deq2);
}

// deque赋值
void test02()
{
    deque<int> deq1,deq2;
    deq1.push_back(1);
    deq1.push_back(2);
    deq1.push_back(3);
    deq2 = deq1;
    printDeque(deq2);
}

// deque大小操作
void test03()
{
    deque<int> deq1;
    cout << deq1.empty() << endl;
    deq1.push_back(1);
    deq1.push_back(2);
    deq1.push_back(3);
    cout << deq1.empty() << endl;

    cout << deq1.size() << endl;

    // resize(size, num) 重新定义容器的大小,多余的位置用num来填充

}

// deque插入
void test04()
{
    deque<int> deq;
    // 尾插和尾删
    deq.push_back(1);
    deq.push_back(2);
    deq.pop_back();

    deq.push_front(3);
    deq.push_front(4);
    deq.pop_front();

    printDeque(deq);

    // clear()
    deq.clear();
    for(int i=0; i<4; i++)
    {
        deq.push_back(i);
    }
    printDeque(deq);

    // insert(const_iterator pos, ele)
    deq.insert(deq.begin()+1,5);
    printDeque(deq);
    deq.insert(deq.begin()+2,2,5); // 在该位置插入2个5
    printDeque(deq);

    deque<int> deq2;
    deq2.push_back(10);
    deq2.push_back(20);
    deq2.push_back(30);
    deq2.push_back(40);
    deq2.push_back(50);
    deq2.push_back(60);
    // 将deq2的某个区间内的数字,插入到deq的某个位置处
    deq.insert(deq.begin()+2, deq2.begin()+1, deq2.end()-1);
    printDeque(deq);

    

}

// 5 删除函数erase()
void test05()
{
    deque<int> deq;
    deq.clear();
    for(int i=0; i<10; i++)
    {
        deq.push_back(i);
    }

    // 1 erase(beg,end); 删除[beg,end)区间内的数据,返回下一个数据的位置
    deq.erase(deq.begin()+3,deq.begin()+5);
    printDeque(deq);

    // 2 erase(pos); 删除pos位置的数据,返回下一个数据的位置
    deq.erase(deq.end())
    ;printDeque(deq);
}

// 数据存取
void test06()
{
    deque<int> deq;
    deq.clear();
    for(int i=0; i<10; i++)
    {
        deq.push_back(i);
    }

    // deq.at(ind);
    cout << "deq.at(1) = " << deq.at(1) << endl;
    // deq[ind];
    cout << "deq[2] = " << deq[2] << endl;
    // deq.front(); 返回第一个元素
    cout << "deq.front() = " << deq.front() << endl;
    // deq.back(); 返回最后一个元素
    cout << "deq.back() = " << deq.back() << endl;
}

void test07()
{
    deque<int> deq;
    deq.push_back(30);
    deq.push_back(20);
    deq.push_back(10);
    sort(deq.begin(), deq.end());
    cout << "排序后:";
    printDeque(deq);
}

int main(int argc, char **argv)
{
    // 1 构造
    cout << "1 构造" << endl;
    test01();
    cout << endl;

    // 2 赋值
    cout << "2 赋值" << endl;
    test02();
    cout << endl;

    // 3 大小操作
    cout << "3 大小操作" << endl;
    test03();
    cout << endl;

    // 4 插入
    cout << "4 插入" << endl;
    test04();
    cout << endl;

    // 5 删除
    cout << "5 删除" << endl;
    test05();
    cout << endl;

    // 6 数据存取
    cout << "6 数据存取" << endl;
    test06();
    cout << endl;
    
    // 7 排序
    cout << "7 排序" << endl;
    test07();
    cout << endl;

    return 0;
}

在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值