关于c++:C-STL-deque添加和删除元素

9次阅读

共计 2629 个字符,预计需要花费 7 分钟才能阅读完成。

一、前言

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;
    }

后果如下:

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;

后果如下:

正文完
 0