zoukankan      html  css  js  c++  java
  • C++容器-STL

    STL的最主要组成部分--容器
    分为向量(vector),双端队列(deque),表(list),队列(queue),堆栈(stack),集合(set),多重集合(multiset),映射(map),多重映射(multimap)

    1、deque

    #include <deque>
    using namespace std;

    2、构造函数

    deque<Elem> c;              //产生一个空的deque,其中没有任何元素
    deque<Elem> c(n);           //产生一个大小为n的deque
    deque<Elem> c(n , elem);    //产生一个大小为n的deque,每个元素值都是elem

    3、非变动性操作
    c.size(); //返回当前的元素数量
    c.empty(); //判断大小是否为零
    c.max_size(); //可容纳元素的最大数量
    c.at(idx) ; //返回索引为idx所标示的元素,如果idx越界,抛出out_of_range
    c.front() ; //返回第一个元素,不检查元素是否存在
    c.back(); //返回最后一个元素
    c.begin(); //返回一个随机迭代器,指向第一个元素
    c.end(); //返回一个随机迭代器,指向最后元素的下一位置

    4、变动性操作
    c1 = c2; //将c2的所有元素赋值给c1
    c.push_back(elem); //在尾部添加元素elem
    c.pop_back(); //移除最后一个元素
    c.push_front(); //在头部添加元素elem
    c.pop_front(); //移除头部一个元素
    c.resize(num); //将容器大小改为num,可更大或更小
    c.clear(); //移除所有元素,将容器清空

    5、迭代器使用

    deque<int>::iterator itor;

    6、例子

    int main()
    {
        deque<int> data;
        data.push_back(1);
        cout << data.size() << endl;
        deque<int>::iterator itor;
        for(itor=data.begin();itor!=data.end();itor++)
        {
            cout << *itor << endl;
            data.erase(itor);    //迭代器死循环?
        }
    } 

    7、list

    #include <list>

    其他和deque一样

    8、注意
    C++的容器,封装结构类型尽量用C++的类型(尤其是字符串),不然会导致数据异常

    9、vector,list,deque三容器的使用原则
    如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
    如果你需要大量的插入和删除,而不关心随即存取,则应使用list
    如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque

    参考:http://blog.csdn.net/jgl841001/article/details/8181933

  • 相关阅读:
    进制
    流程控制
    运算符
    格式化输出
    数据结构-树的遍历
    A1004 Counting Leaves (30分)
    A1106 Lowest Price in Supply Chain (25分)
    A1094 The Largest Generation (25分)
    A1090 Highest Price in Supply Chain (25分)
    A1079 Total Sales of Supply Chain (25分)
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709935.html
Copyright © 2011-2022 走看看