C++ deque容器-47-deque大小操作和插入和删除

继续学习双端数组deque的api,前面学习了deque的构造和赋值操作,还有始终一样的遍历容器代码操作。这里先学习deque大小操作,主要有判断容器是否为空,元素总数多少,还有修改容器大小操作。然后学习deque的插入和删除相关API

 

1.deque的大小操作

函数原型

首先empty() 如为空返回1,如果不为空返回0

#include <iostream>
#include <string>
#include <deque>
using namespace std;

void printDeque(const deque<int> &d)
{
    // for循环迭代器遍历容器内元素
    for(deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
    {
        cout << *it << " ";   
    }
    cout << endl;

}

void test01()
{
    deque<int> d;
    // 查询是否为空
    cout << "is Empty?" << d.empty() << endl;

    for(int i=0; i<10; i++)
    {
        d.push_back(i);
    }
    printDeque(d);

    // 查询是否为空
    cout << "is Empty?" << d.empty() << endl;

    // 查询大小
    cout << "deque size:" << d.size() << endl;

    // 重置大小
    d.resize(5);
    cout << "deque size:" << d.size() << endl;

}

int main()
{
    test01();
    system("pause");
    return 0;
}

运行代码:

 

2.deque的插入和删除

由于是双端数组操作,头和尾都支持插入和删除。这里先看看两端的插入和删除操作

#include <iostream>
#include <string>
#include <deque>
using namespace std;

void printDeque(const deque<int> &d)
{
    // for循环迭代器遍历容器内元素
    for(deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
    {
        cout << *it << " ";   
    }
    cout << endl;

}

void test01()
{
    deque<int> d;
    for(int i=0; i<10; i++)
    {
        d.push_back(i);
    }
    printDeque(d);

    // 头部插入
    d.push_front(-1);
    printDeque(d);

    // 尾部插入
    d.push_back(10);
    printDeque(d);

    // 头部删除
    d.pop_front();
    printDeque(d);

    // 尾部删除
    d.pop_back();
    printDeque(d);

}

int main()
{
    test01();
    system("pause");
    return 0;
}

运行效果

 

再来看看指定位置的插入和删除以及清空容器的方法

先来练习insert()函数

#include <iostream>
#include <string>
#include <deque>
using namespace std;

void printDeque(const deque<int> &d)
{
    // for循环迭代器遍历容器内元素
    for(deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
    {
        cout << *it << " ";   
    }
    cout << endl;

}

void test01()
{
    deque<int> d;
    d.push_back(10);
    d.push_back(20);
    d.push_front(100);
    d.push_front(200);
    printDeque(d);

    d.insert(d.begin(), 1000);
    printDeque(d);
    
    d.insert(d.begin() + 2, 2, 800);
    printDeque(d);

    // 按照区间进行插入
    d.insert(d.begin() + 1, d.begin() + 3, d.end() -2);
    printDeque(d);

}

int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果

稍微注意下按照区间插入API的三个参数,第一个参数指位置,第二个参数数一个容器区间开始,第三个参数数一个容器区间的结束位置。

 

接下来看看清除相关的API

#include <iostream>
#include <string>
#include <deque>
using namespace std;

void printDeque(const deque<int> &d)
{
    // for循环迭代器遍历容器内元素
    for(deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
    {
        cout << *it << " ";   
    }
    cout << endl;

}

void test01()
{
    deque<int> d;
    d.push_back(10);
    d.push_back(20); 
    d.push_front(100);
    d.push_front(200);
    printDeque(d);

    // 擦除区间
    d.erase(d.begin(), d.begin() +2);
    printDeque(d);

    // 删除指定位置
    d.erase(d.begin() + 1);
    printDeque(d);

    d.clear();
    printDeque(d);

}

int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果

 

 

 

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页