C++ STL deque添加和删除元素

等待樱花盛开

一、前言

deque 容器中,无论是添加元素还是删除元素,都只能借助 deque 模板类提供的成员函数。

二、涉及的相关函数

函数功能
push_back()在容器现有元素的尾部添加一个元素
pop_back()移除容器尾部的一个元素
push_front()在容器现有元素的头部添加一个元素
pop_front()移除容器尾部的一个元素
emplace_back()在容器尾部生成一个元素,效率比push_back()高
emplace_front()在容器头部生成一个元素,效率比push_front()高
insert()在指定的位置直接生成一个元素
emplace()在指定的位置直接生成一个元素,效率比insert高
erase()移除一个元素或某一区域内的多个元素
clear()删除容器中所有的元素

insert用法

格式功能
iterator insert(pos,elem)在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器
iterator insert(pos,n,elem)在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器
iterator insert(pos,first,last)在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器
iterator insert(pos,initlist)在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器

三、实例

1、添加、删除

std::deque<int> dequeInt;

    dequeInt.push_back(319);
    std::cout << "push_back dequeInt size: " << dequeInt.size() << std::endl;
    dequeInt.pop_back();
    std::cout << "pop_back dequeInt size: " << dequeInt.size() << std::endl;

    dequeInt.push_front(31);
    dequeInt.push_front(571);
    dequeInt.push_front(910);
    for (int i = 0; i < dequeInt.size(); i++)
    {
        std::cout << "push_front dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
    }

    dequeInt.pop_front();
    for (int i = 0; i < dequeInt.size(); i++)
    {
        std::cout << "pop_front dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
    }

    dequeInt.emplace_front(1099);
    dequeInt.emplace_back(7100);
    for (int i = 0; i < dequeInt.size(); i++)
    {
        std::cout << "emplace_front and emplace_back dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
    }

    dequeInt.emplace(dequeInt.begin() + 2, 4301);
    for (int i = 0; i < dequeInt.size(); i++)
    {
        std::cout << "emplace dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
    }

    dequeInt.erase(dequeInt.begin() + 2);
    for (int i = 0; i < dequeInt.size(); i++)
    {
        std::cout << "erase appoint dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
    }

结果如下:
image.png

2、insert实例

 std::deque<int> dequeInt{4301,2591,671};
    std::cout << "dequeInt size: " << dequeInt.size() << std::endl;

    dequeInt.insert(dequeInt.begin() + 2, 798);
    for (int i = 0; i < dequeInt.size(); i++)
    {
        std::cout << "insert1 dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
    }
    std::cout << "dequeInt size: " << dequeInt.size() << std::endl;

    dequeInt.insert(dequeInt.begin() + 3, 3, 9);
    for (int i = 0; i < dequeInt.size(); i++)
    {
        std::cout << "insert2 dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
    }
    std::cout << "insert2 dequeInt size: " << dequeInt.size() << std::endl;

    std::array<int, 3> arrayInt{ 901,756,34 };
    dequeInt.insert(dequeInt.begin() + 5, arrayInt.begin(), arrayInt.end());
    for (int i = 0; i < dequeInt.size(); i++)
    {
        std::cout << "insert3 dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
    }
    std::cout << "insert3 dequeInt size: " << dequeInt.size() << std::endl;

    dequeInt.insert(dequeInt.begin() + 1, { 88,92,34 });
    for (int i = 0; i < dequeInt.size(); i++)
    {
        std::cout << "insert4 dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
    }
    std::cout << "insert4 dequeInt size: " << dequeInt.size() << std::endl;

结果如下:
image.png

阅读 679

小菜鸟一枚,望各位大佬不吝指教,用于记录学习

1 声望
0 粉丝
0 条评论
你知道吗?

小菜鸟一枚,望各位大佬不吝指教,用于记录学习

1 声望
0 粉丝
文章目录
宣传栏