zoukankan      html  css  js  c++  java
  • C++ STL库

    List 用法

    一、List定义:

    List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。使用时需要添加头文件

    #include <list>

    二、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

    三、List常用操作函数:

    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中重复的元素

    Vector 用法

    一、说明

    vector的元素不仅仅可以是int,double,string,还可以是结构体,但是要注意:结构体要定义为全局的,否则会出错。

    头文件#include<vector>

    二、用法

    (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.rezize(10);//将a的现有元素个数调至10个,多则删,少则补,其值随机
    (17)a.rezize(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为向量,向量的比较操作还有!=,>=,<=,>,<

    Deque 用法

    一、说明

    双端队列是一种随机访问的数据类型,提供了在序列两端快速插入和删除操作的功能

    #include <deque> // 头文件

    二、用法

    deque<type> deq; // 声明一个元素类型为type的双端队列que

    deque<type> deq(size);// 声明一个类型为type、含有size个默认值初始化元素的的双端队列que

    deque<type> deq(size, value); // 声明一个元素类型为type、含有size个value元素的双端队列que

    deque<type> deq(mydeque); // deq是mydeque的一个副本

    deque<type> deq(first, last); // 使用迭代器first、last范围内的元素初始化deq

    1. deq[ ]:用来访问双向队列中单个的元素。
    2. deq.front():返回第一个元素的引用。
    3. deq.back():返回最后一个元素的引用。
    4. deq.push_front(x):把元素x插入到双向队列的头部。
    5. deq.pop_front():弹出双向队列的第一个元素。
    6. deq.push_back(x):把元素x插入到双向队列的尾部。
    7. deq.pop_back():弹出双向队列的最后一个元素。
  • 相关阅读:
    左偏树
    “今日头条杯”首届湖北省大学程序设计竞赛现场赛
    最短路
    BP神经网络算法改进
    图论学习路线
    差分演化算法
    51Nod 1413 权势二进制
    51Nod 1315 合法整数集
    Treap(树堆)
    今日头条杯2018湖北省大学生程序设计竞赛(网络赛)
  • 原文地址:https://www.cnblogs.com/poonpan/p/9020304.html
Copyright © 2011-2022 走看看