您现在的位置是:首页 > 技术文章网站首页技术文章

[STL]认识deque

  • WangYe
  • 2020-08-02 14:53:45
  • 635 次阅读
认识下STL容器中deque

特点:

    1. deque(double-ended queue 双端队列);

    2. 具有分段数组,索引数组,分段数组时存储数据的,索引是储存每段数组首地址;

    3. 向两端插入元素效率较高 (若向两端插入元素,如果两端的分段数组未满,既可插入;如果两端的分段数组已满,则创建新的分段函数,并把分段数组的首地址存储到deque容器中即可);

    4. 中间插入元素效率较低;


创建deque对象:

    1. deque<int> d1;

    2. deque<int> d2(10);


基础操作:

    (1)元素访问

d[i];
d.at[i];
d.front();
d.back();
d.begin();
d.end();

    (2)添加元素

d.push_back();
d.push_front();
d.insert(pos,elem);    //pos是vector的插入元素位置
d.insert(pos,n,elem);    //在位置pos上插入n个元素elem
d.insert(pos,begin,end);

    (3)删除元素

d.pop_back();    //删除双端队列中最后一个元素
d.pop_front();    //删除双端队列中最前一个元素
d.erase(pos);    //移除pos位置上的元素,返回下一个数据位置
d.erase(begin,end);    //移除[begin,end]区间数据,返回下一个元素位置


实例:

/*pop_back()*/
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> vec;
    int sum(0);
    vec.push_back(10);
    vec.push_back(20);
    vec.push_back(30);
    while(!vec.empty())
    {
        sum += vec.back();
        vec.pop_back();
    }
    cout<<"vec.size()="<<vec.size()<<endl;
    cout<<"sum = "<<sum<<endl;
    system("pause");
    return 0;
}
/*erase(begin,end)*/
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> vec;
    for(int i=0;i<10;i++)
    {
        vec.push_back(i);
    }
    vec.erase(vec.begin()+5);//erase the 6th element
    vec.erase(vec.begin(),vec.begin()+3);
    for(int i=0;i<vec.size();i++)
    {
        cout<<vec[i]<<' ';
    }
    cout<<endl;
    system("pause");
    return 0;
}


TAG: deque STL

上一篇:[STL]认识vector

下一篇:[STL]认识list

文章评论 (0)



Top