• C++vector,stack,queue,deque, list基本使用


    vector

    初始化

       (1)vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
       (2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1
       (3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值
       (4)vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
       (5)int b[7]={1,2,3,4,5,9,8};
                vector<int> a(b,b+7); //从数组中获得初值

    常用方法

        (1)a.assign(b.begin(), b.begin()+3); //b为向量,将b的0~2个元素构成的向量赋给a
        (2)a.assign(4,2); //是a只含4个元素,且每个元素为2
        (3)a.back(); //返回a的最后一个元素
        (4)a.front(); //返回a的第一个元素
        (5)a[i]; //返回a的第i个元素,当且仅当a[i]存在2013-12-07
        (6)a.clear(); //清空a中的元素
        (7)a.empty(); //判断a是否为空,空则返回ture,不空则返回false
        (8)a.pop_back(); //删除a向量的最后一个元素
        (9)a.erase(a.begin()+1,a.begin()+3); //删除a中第1个(从第0个算起)到第2个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+         3(不包括它)
        (10)a.push_back(5); //在a的最后一个向量后插入一个元素,其值为5
        (11)a.insert(a.begin()+1,5); //在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4
        (12)a.insert(a.begin()+1,3,5); //在a的第1个元素(从第0个算起)的位置插入3个数,其值都为5
        (13)a.insert(a.begin()+1,b+3,b+6); //b为数组,在a的第1个元素(从第0个算起)的位置插入b的第3个元素到第5个元素(不包括b+6),如b为1,2,3,4,5,9,8         ,插入元素后为1,4,5,9,2,3,4,5,9,8
        (14)a.size(); //返回a中元素的个数;
        (15)a.capacity(); //返回a在内存中总共可以容纳的元素个数
        (16)a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机
        (17)a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2
        (18)a.reserve(100); //将a的容量(capacity)扩充至100,也就是说现在测试a.capacity();的时候返回值是100.这种操作只有在需要给a添加大量数据的时候才         显得有意义,因为这将避免内存多次容量扩充操作(当a的容量不足时电脑会自动扩容,当然这必然降低性能)
        (19)a.swap(b); //b为向量,将a中的元素和b中的元素进行整体性交换
        (20)a==b; //b为向量,向量的比较操作还有!=,>=,<=,>,<

    stack

    抬头:

    #include <stack> 

    stack s;

    操作:

    有返回值

    s.top();  //返回栈顶元素

    s.empty();  //返回bool判定是否为空

    无返回值

    s.pop(); //删除栈顶元素,并返回该删除值

    s.push( T );  

    s.size() 返回栈中元素数目

    queue

    queue 模板类的定义在<queue>头文件中。
    与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类
    型,元素类型是必要的,容器类型是可选的,默认为deque 类型。
    定义queue 对象的示例代码如下:
    queue<int> q1;
    queue<double> q2;

    queue 的基本操作有:
    入队,如例:q.push(x); 将x 接到队列的末端。
    出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
    访问队首元素,如例:q.front(),即最早被压入队列的元素。
    访问队尾元素,如例:q.back(),即最后被压入队列的元素。
    判断队列空,如例:q.empty(),当队列空时,返回true。
    访问队列中的元素个数,如例:q.size()

    deque

    需要包括头文件<deque>;

        定义:

             deque<数据类型> 变量名;

        Eg:

            deque<int> que;//定义了一个整型的双端队列;

       基本操作(红色标识为常用操作):

           que.assign(beg,end) 将[beg; end)区间中的数据赋值给que。
           que.assign(n,elem) 将n个elem的拷贝赋值给que。
           que. at(idx) 传回索引idx所指的数据,如果idx越界,抛出out_of_range。
           que.back() 返回容器que的最后一个元素的引用。如果que为空,则该操作未定义。
           que.begin() 传回迭代器中的第一个数据地址。
           que.clear() 移除容器中所有数据。
           que.empty() 判断容器是否为空。
           que.end() 返回一个迭代器,它指向容器que的最后一个元素的下一位置。
           que.erase(pos) 删除pos位置的数据,传回下一个数据的位置。
           que.erase(beg,end) 删除[beg,end)区间的数据,传回下一个数据的位置。
           que.front() 返回容器que的第一个元素的引用。如果que为空,则该操作为空。
           que.insert(pos,elem) 在pos位置插入一个elem拷贝,传回新数据位置
           que.insert(pos,n,elem) 在pos(迭代器)位置插入>n个elem数据。无返回值
     
           que.insert(pos,beg,end) 在pos位置插入在[beg,end)区间的数据。无返回值
           que.max_size() 返回容器que可容纳的最多元素个数。
           que.pop_back() 删除最后一个数据。
           que.pop_front() 删除头部数据。
           que.push_back(elem) 在尾部加入一个数据。
           que.push_front(elem) 在头部插入一个数据。
           que.rbegin() 返回一个逆序迭代器,它指向容器que的最后一个元素。
           que.rend() 返回一个逆序迭代器,它指向容器que的第一个元素的前一个位置。
           que.resize(num) 重新指定队列的长度。
           que.size() 返回容器中实际数据的个数。
           que.swap(que2) 交换容器que和que2中的所有元素。
           swap(que1,que2) 交换容器que1和que2中的所有元素。
     

    list

    list<int>lst1;          //创建空list
    list<int> lst2(5);       //创建含有5个元素的list
    list<int>lst3(3,2);  //创建含有3个元素的list
    list<int>lst4(lst2);    //使用lst2初始化lst4
    list<int>lst5(lst2.begin(),lst2.end());  //同lst4
     
    Lst1.assign() 给list赋值
    Lst1.back() 返回最后一个元素
    Lst1.begin() 返回指向第一个元素的迭代器
    Lst1.clear() 删除所有元素
    Lst1.empty() 如果list是空的则返回true
    Lst1.end() 返回末尾的迭代器
    Lst1.erase() 删除一个元素
    Lst1.front() 返回第一个元素
    Lst1.get_allocator() 返回list的配置器
    Lst1.insert() 插入一个元素到list中
    Lst1.max_size() 返回list能容纳的最大元素数量
    Lst1.merge() 合并两个list
    Lst1.pop_back() 删除最后一个元素
    Lst1.pop_front() 删除第一个元素
    Lst1.push_back() 在list的末尾添加一个元素
    Lst1.push_front() 在list的头部添加一个元素
    Lst1.rbegin() 返回指向第一个元素的逆向迭代器
    Lst1.remove() 从list删除元素
    Lst1.remove_if() 按指定条件删除元素
    Lst1.rend() 指向list末尾的逆向迭代器
    Lst1.resize() 改变list的大小
    Lst1.reverse() 把list的元素倒转
    Lst1.size() 返回list中的元素个数
    Lst1.sort() 给list排序
    Lst1.splice() 合并两个list
    Lst1.swap() 交换两个list
    Lst1.unique() 删除list中重复的元素
  • 相关阅读:
    接口框架项目示例
    接口框架开发流程总结
    requests库的简单使用
    使用flask创建简单的接口
    session和token
    解决log函数生成重复log的问题
    自定义封装logging参考
    织梦dedecms做的网站首页标题篡改跳转赌博网站解决方案
    织梦网站安全查杀
    织梦重置密码的方法和织梦网站后台登陆账号修改方法
  • 原文地址:https://www.cnblogs.com/xumaomao/p/11191070.html
Copyright © 2020-2023  润新知