• stl


    容器

    vector

    注意必须包含头文件#include<vector>

    特点:动态数组 元素类型相同 只能从尾部快速插入或者删除 随机访问快 中间插入删除慢(需要移动) capcity是给的块的大小

    定义vector

    vector<int> A(10, 1); //声明一个初始大小为10且值都是1的向量
    vector<int> A(tmp);   //声明并用tmp向量初始化vec向量
    vector<int> tmp(A.begin(), A.begin() + 3);  //用向量vec的第0个到第2个值初始化tmp
    int arr[5] = {1, 2, 3, 4, 5};   
    vector<int> A(arr, arr + 5);      //将arr数组的元素用于初始化A向量
    //说明:当然不包括arr[4]元素,末尾指针都是指结束元素的下一个元素,
    //这个主要是为了和vec.end()指针统一
    vector<int> A(&arr[1], &arr[4]); //将arr[1]~arr[4]范围内的元素作为A的初始值

    vector操作

    向量大小: A.size();
    向量最大容量:  A.max_size();与机器有关 与程序无关
    更改向量大小:  A.resize(n); n是新的大小

    例证capacity、resize、shrink to fit 的关系

    vector<int> myvector(100);#myvector.capacity() 是100
        myvector.resize(10);#myvector.capacity() 还是100没有变成10
        myvector.shrink_to_fit();#myvector.capacity() =10了
        //缩小到真实单位
       

    push_back(i):把i添加到队尾           pop-back()没有参数,删除最后一位      at(n):返回下标为n的元素,实际上是第n+1个    empty():0为非空

    assign(2,3):重新分配元素为2个3       insert(myvector.begin()+1, 8);//在第一和第二插入8   erase():删除,用法同inset   

    vector<int>::iterator it 迭代器 在for中注意用*it

    end返回最后的后一个位置  begin返回第一个位置

    deque双端队列 比vector强的地方在于可以从头或尾部快速删除或插入  操作基本和vector一样

    set 集合容器 每个元素都有一个key 通过key来存储 默认对key进行升序排序 查找速度快 支持交并差 mulset允许相同的key,set不允许  其实set和vector差不多

    map,key和value是一个二元组 map<char,int> m1;key是first,value是second  m1['a']=1表示输入一对,key是a,value是1的二元组

    stack、queue、priority_queue 的函数,pop出,top返回顶部元素,栈就是刚进的,队列就是第一个进的

    map和set是关联容器  用红黑树来储存 插删时不需要内存复制和移动

    map的数据结构是红黑树 hashmap是哈希表

    重载<或者> 配合sort'函数 可以对数据结构操作 实现目的



     

      

     

  • 相关阅读:
    cuda npp库旋转图片
    Xml序列化 详解
    jsonp简介
    在centos7下安装.net core
    安装vs2017后造成无法打开xproj项目无法打开
    SqlServer 语法
    js自定义事件
    HttpWebResponse 解压gzip、deflate压缩
    centos7 安装.net core的方法
    帮助类-从tfs获取数据
  • 原文地址:https://www.cnblogs.com/hellod/p/12199154.html
Copyright © 2020-2023  润新知