• 顺序容器


    顺序容器类型

        vector     可变大小数组。支持快速随机访问。在尾部之外的位置插入或者删除元素可能很慢
        deque       双端队列。支持快速随机访问,在头尾插入/删除速度很快
        list 双向链表,只支持双向顺序访问,在list中任何位置进行插入/删除操作都很快
        forward_list 单项链表,只支持单项顺序访问,在链表任何位置进行插入/删除造作都很快
        array 固定大小数组,支持快速随机访问,不能添加和删除元素
        string 与vector相似的容器,但专门用于保存字符。随机访问很快,在尾部插入/删除很快

    容器操作

    类型别名  
      iterator   容器类型的迭代器类型
      const_iterator   可以读取元素,但不能修改元素的迭代器类型  
      size_type 无符号整数,足够保存此容器类型最大可能容器的大小  
      differenct_type   带符号整数类型,足够保存两个迭代器之间的距离
      value_type 元素类型
    构造函数  
      C c 默认构造函数
      C c1(c2) 

    构造c2的拷贝c1

      C c(b,e) 构造c,将迭代器b和e指定范围能的元素到c(array)不支持
      C c{a,b,c,d,e,f} 列表初始化c
    赋值与swap  
      c1=c2 将c1中的元素替换为c2中的元素
      c1={a,b,c} 将c1中的元素替换为列表中的元素(不适用于array)
      a.swap(b) 交换a和b的元素
      swap(a,b) 与a.swap(b)等价
    大小  
      c.size() c中元素的数目(不支持forward_list)
      c.maxsize() c可保存的最大元素数目
      c.empty() 若c中存储了元素,返回false,否则返回true
    添加/删除元素  
      注:在不同的容器中,这些操作的结构都不同
      c.insert(args) 将args中的元素拷贝进c
      c.emplace(inits) 使用inits构造c中的一个元素
      c.erase(args) 删除args指定的元素
      c.clear() 删除c中的所有元素,返回void
    关系运算符  
      == , != 所有容器都支持相等(不等)运算符
      < , <= ,> ,>= 关系运算符(无序关联容器不支持)
    获取迭代器  
      c.begin(),c.end() 返回指向c的首元素和微元素之后位置的迭代器
      c.cbegin(),c,cend() 返回const_iterator

    注意:赋值相关运算会导致指向坐标容器内部的迭代器、引用和指针失效。而swap操作将容器内容交换不会导致指向容器的迭代器、引用和指针失效

    seq.assign(b,e)  将seq中的元素替换为迭代器b和e所表示的范围中的元素。迭代器b和e不能指向seq中的元素

    seq.assign(il)   将迭代器中的元素替换为初始化列表i1中的元素

    seq.assign(n,t)    将seq中的元素替换为n个值为t的元素

    向顺序容器添加元素

      除array外,所有标准库容器都提供灵活的内存管理。在运行时可以动态添加或删除元素来改变容器大小。

    这些操作都会改变容器大小,array不支持这些操作

    forward_list 有自己转悠版本的insert和emplace

    forward_list不支push_back和emplace_back

    vector和string不支持push_front和emplace_front

    c.pushback(t)   在c尾部创建一个值为t或由args创建的元素。返回void
    c.emplace_back(args)    
    c.push_front(t) 在c头部创建一个值为t或由args创建的元素。返回void
    c.emplace_front(args)  
    c.insert(p,t) 在迭代器p指向的元素之前插入n个值为t的元素。返回指向鑫添加的第一个元素的迭代器,或n为0,则返回p
    c.insert(p,b,e) 将迭代器b和e指定范围内的元素插入到迭代器p指向的元素之前,b和e不能指向c中的元素。返回指向新添加的第一个元素的迭代器;若范围为空,则返回p
    c.insert(p,il) il是一个花括号包围的元素值列表。将这些给定插入到迭代器p指向的元素之前。返回指向新天的第一个元素的迭代器:若列表为空,则返回p

    String的额外操作

    标准库string类型还提供了接受C风格字符数组的insert和assign版本。

    s.substr(pos,n)   返回一个string,包含s中从pos开始的第n个字符的拷贝。pos的默认值为0。
    s.insert(pos,args) 在pos之前插入args指定的字符。pos可以是一个下标或一个迭代器。接受下标的版本返回一个指向s的引用;接受迭代器的版本返回指向第一个插入字符的迭代器
    s.erase(pos,len)  删除从位置pos开始的len个字符。如果len被删除,则删除从pos开始直至s末尾的所有字符。返回一个指向s的引用
    s.assign(args) 将s中的字符替换为args指定的字符。返回一个指向s的引用
    a.sppend(args) 将args追加到s。返回一个指向s的引用
    s.replace(rang,args)   删除s中范围range内的字符,替换为args指定的字符。range或者是一个下表和一个长度,或者是一对指向s的迭代器,返回一个指向s的引用
    s.find(args) 查找s中args第一次出现的位置
    s.rdinf(args) 查找s中args最后一次出现的位置
    s.find_first_of(args) s中查找args中任何一个字符第一次出现的位置
    s.find_last_of(agrs) s中查找args中任何一个字符最后出现的位置
    s.find_first_not_of(args)   在s中查找第一个不在args中的字符
    s.find_last_not_of(args) 在s中查找最后一个不在args中的字符
  • 相关阅读:
    python,生产环境安装
    neo4j 图数据库
    RNN系列
    机器学习关于AUC的理解整理
    fensorflow 安装报错 DEPENDENCY ERROR
    dubbo Failed to check the status of the service com.user.service.UserService. No provider available for the service
    使用hbase遇到的问题
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk
    gradle 安装
    jenkins 安装遇到的坑
  • 原文地址:https://www.cnblogs.com/huangzhenxiong/p/7773646.html
Copyright © 2020-2023  润新知