• STL之deque使用简介


    deque函数列表

    函数
    c.assign(beg,end)
    c.assign(n,elem)
    c.at(idx)
    c.back()
    c.begin()
    c.clear()
    deque<Elem> c
    deque<Elem> c1(c2)
    deque<Elem> c(n)
    deque<Elem> c(n, elem)
    deque<Elem> c(beg,end)
    c.~deque<Elem>()
    c.empty()
    c.end()
    c.erase(pos)
    c.erase(beg,end)
    c.front()
    c.get_allocator
    c.insert(pos,elem)
    c.insert(pos,n,elem)
    c.insert(pos,beg,end)
    c.max_size()
    c.pop_back()
    c.pop_front()
    c.push_back(elem)
    c.push_front(elem)
    c.rbegin()
    c.rend()
    c.resize(num)
    c.size()
    C1.swap(c2)
    描述
    将[beg; end)区间中的数据赋值给c。
    将n个elem的拷贝赋值给c。
    传回索引idx所指的数据,如果idx越界,抛出out_of_range。
    传回最后一个数据,不检查这个数据是否存在。
    传回迭代器重的可一个数据。
    移除容器中所有数据。
    创建一个空的deque。
    复制一个deque。
    创建一个deque,含有n个数据,数据均已缺省构造产生。
    创建一个含有n个elem拷贝的deque。
    创建一个以[beg;end)区间的deque。
    销毁所有数据,释放内存。
    判断容器是否为空。
    指向迭代器中的最后一个数据地址。
    删除pos位置的数据,传回下一个数据的位置。
    删除[beg,end)区间的数据,传回下一个数据的位置。
    传回地一个数据。
    使用构造函数返回一个拷贝。
    在pos位置插入一个elem拷贝,传回新数据位置。
    在pos位置插入>n个elem数据。无返回值。
    在pos位置插入在[beg,end)区间的数据。无返回值。
    返回容器中最大数据的数量。
    删除最后一个数据。
    删除头部数据。
    在尾部加入一个数据。
    在头部插入一个数据。
    传回一个逆向队列的第一个数据。
    传回一个逆向队列的最后一个数据的下一个位置。
    重新指定队列的长度。
    返回容器中实际数据的个数。
    将c1和c2元素互换。

    构造函数

    deque<Elem> c 创建一个空的deque
    deque<Elem> c1(c2) 复制一个deque。
    deque<Elem> c(n) 创建一个deque,含有n个数据,数据均已缺省构造产生。
    deque<Elem> c(n, elem) 创建一个含有n个elem拷贝的deque。
    deque<Elem> c(beg,end) 创建一个以[beg;end)区间的deque。
    ~deque<Elem>() 销毁所有数据,释放内存。

    成员函数

    c.begin()返回指向第一个元素的迭代器
    c.end()返回指向最后一个元素下一个位置的迭代器

    deque<int> d {1,2,3,4,5};
    deque<int>::iterator it;
    for(it=d.begin();it!=d.end();it++){
        cout << *it << " ";
    }
    cout << endl;

    c.rbegin()返回指向反向队列的第一个元素的迭代器(即原队列的最后一个元素)
    c.rend()返回指向反向队列的最后一个元素的下一个位置(即原队列的第一个元素的前一个位置)

    deque<int> d {1,2,3,4,5};
    deque<int>::reverse_iterator it;
    for(it=d.rbegin();it!=d.rend();it++){
        cout << *it << " ";
    }
    cout << endl;

    operator=赋值运算符重载

    deque<int> d1 {1,2,3,4,5},d2;
    d2 = d1;
    deque<int>::iterator it;
    for(it=d2.begin();it!=d2.end();it++){
        cout << *it << " ";
    }
    cout << endl;

    c.assign(n,num)将n个num拷贝复制到容器c
    c.assign(beg,end)将[beg,end)区间的数据拷贝复制到容器c

    deque<int> d1 {1,2,3,4,5},d2;
    d2.assign(2, 8);
    deque<int>::iterator it;
    cout << "d2.assign(n,num):";
    for(it=d2.begin();it!=d2.end();it++){
        cout << *it << " ";
    }
    d2.assign(d1.begin(), d1.begin()+3);
    cout << "d2.assign(beg,end):";
    for(it=d2.begin();it!=d2.end();it++){
        cout << *it << " ";
    }
    cout << endl;

    c.at(pos)返回索引为pos的位置的元素,会执行边界检查,如果越界抛出out_of_range异常

    deque<int> d {1,2,3,4,5};
    cout << "d.at(pos):" << d.at(2);
    return 0;

    c.operator[]下标运算符重载

    c.empty()判断c容器是否为空
    c.front()返回c容器的第一个元素
    c.back()返回c容器的最后一个元素
    c.size()返回c容器中实际拥有的元素个数
    c.max_size()返回c容器可能存放元素的最大数量
    c.insert(pos,num)在pos位置插入元素num
    c.insert(pos,n,num)在pos位置插入n个元素num
    c.insert(pos,beg,end)在pos位置插入区间为[beg,end)的元素

    deque<int> d {1,2,3,4,5};
    deque<int>::iterator it;
    cout << "insert before:" ;
    for(it=d.begin();it!=d.end();it++){
        cout << *it << " ";
    }
    cout << endl;
    d.insert(d.end(),22);
    d.insert(d.end(), 3,88);
    int a[5] = {1,2,3,4,5};
    d.insert(d.begin(),a,a+3);
    cout << "insert after:" ;
    for(it=d.begin();it!=d.end();it++){
        cout << *it << " ";
    }
    cout << endl;

    c.erase(pos)删除pos位置的元素c.erase(beg,end)删除区间为[beg,end)的元素
    c.erase(beg,end)删除区间为[beg,end)之间的元素

    deque<int> d {1,2,3,4,5};
    d.erase(d.begin());
    deque<int>::iterator it;
    cout << "erase(pos) after:" ;
    for(it=d.begin();it!=d.end();it++){
        cout << *it << " ";
    }
    cout << endl;
    d.erase(d.begin(), d.begin()+3);
    cout << "erase(beg,end) after:" ;
    for(it=d.begin();it!=d.end();it++){
        cout << *it << " ";
    }
    cout << endl;

    c.push_back(num)在末尾位置插入元素
    c.pop_back()删除末尾位置的元素
    c.push_front(num)在开头位置插入元素
    c.pop_front()删除开头位置的元素

    deque<int> d {1,2,3,4,5};
    d.push_back(10);
    deque<int>::iterator it;
    cout << "push_back(num):" ;
    for(it=d.begin();it!=d.end();it++){
        cout << *it << " ";
    }
    cout << endl;
    
    d.pop_back();
    cout << "pop_back(num):" ;
    for(it=d.begin();it!=d.end();it++){
        cout << *it << " ";
    }
    cout << endl;
    
    d.push_front(10);
    cout << "push_front(num):" ;
    for(it=d.begin();it!=d.end();it++){
        cout << *it << " ";
    }
    cout << endl;
    
    d.pop_front();
    cout << "pop_front(num):" ;
    for(it=d.begin();it!=d.end();it++){
        cout << *it << " ";
    }
    cout << endl;
    return 0;

    c.resize(num)从新定义容器的大小

    deque<int> d {1,2,3,4,5};
    cout << "d.size():" << d.size() << endl;
    d.resize(d.size()+5);
    cout << "d.resize() after:" << d.size() <<endl;
    deque<int>::iterator it;
    cout << "resize() after:" ;
    for(it=d.begin();it!=d.end();it++){
        cout << *it << " ";
    }
    cout << endl;

    c1.swap(c2)交换容器c1,c2;
    swap(c1,c2)同上

    deque<int> d1 {1,2,3,4,5},d2,d3;
    d1.swap(d2);
    deque<int>::iterator it;
    cout << "d1 swap after:" ;
    for(it=d1.begin();it!=d1.end();it++){
        cout << *it << " ";
    }
    cout << endl;
    cout << "d2 swap after:" ;
    for(it=d2.begin();it!=d2.end();it++){
        cout << *it << " ";
    }
    cout << endl;
    
    swap(d3,d2);
    cout << "d3 swap after:" ;
    for(it=d3.begin();it!=d3.end();it++){
        cout << *it << " ";
    }
    cout << endl;

    重载运算符
    operator==
    operator!=
    operator<
    operator<=
    operator>
    operator>=

  • 相关阅读:
    FillForm网页表单填写插件(用于火狐浏览器,自动填表,自动表单,填写表单)
    Firefox下完整读写本地文件的方法
    failure notice
    百度奖品兑换监视程序
    javascript数组及其操作(zz)
    JMETER使用
    ubuntu安装mysql
    windows live writer写csdn博客,very good~
    用SSH在linux下安装JDK和Tomcat
    java模拟HTTP请求(集合了网上搜来的各种)
  • 原文地址:https://www.cnblogs.com/tla001/p/6337079.html
Copyright © 2020-2023  润新知