C++标准库(二)之容器

Vector

  • 非更易性操作

    c.empty()    //返回容器是否为空
    c.size()    //返回目前元素的个数
    c.max_size()    //返回元素个数的最大可能量
    c.capacity()    //返回“不进行空间重新分配”条件下的元素最大容量
    c.reserve(number)    //如果容量不足,则进行扩大
    c.shrink_to_fit()    //降低容量
  • 元素访问

    c[idx]
    c.at(idx)    //如果元素访问越界,会抛出out_of_range的异常
    c.front()
    c.back()
  • 安插与移除

    c.push_back(elem)    //将一个elem的拷贝附加至容器末尾
    c.pop_back()    // 移除最后一个元素,但是不返回它
    c.insert(pos,elem)    //在iterator位置pos的前方插入一个elem拷贝,并返回新元素的位置
    c.insert(pos,n,elem)    //在iterator位置pos之前插入elem的n个拷贝,并返回第一个新元素的位置
    c.insert(pos,begin,end)    //在iterator位置pos之前插入区间[begin,end)中的所有元素,返回第一个新元素的位置
    c.insert(pos,initlist)    //在iterator位置pos之前插入初始化列表的一份拷贝,并返回第一个新元素的位置
    c.erase(pos)    //移除iterator位置pos上的元素,返回下一个元素的位置
    c.erase(begin,end)    //移除[begin,end)中的所有元素,返回下一个元素的位置
    c.resize(num)    //将元素的数量改为num,多出来的元素用default构造函数完成初始化
    c.resize(num,elem)    //将元素的数量改为num,多出的元素以elem的拷贝初始化
    c.clear()    //移除所有的元素

    Deque

    双端可变数组
  • 非更易性操作

    c.empty()    //返回容器是否为空
    c.size()    //返回目前元素的个数
    c.max_size()    //返回元素个数的最大可能量
    c.shrink_to_fit()    //降低容量
    c.front()
    c.back()
    c.begin()
    c.end()
    c.cbegin()
    c.cend()
    c.rbegin()
    c.rend()
    c.crbegin()
    c.crend()
  • 元素访问

    c[idx]
    c.at(idx)    //如果元素访问越界,会抛出out_of_range的异常
    c.front()
    c.back()
  • 安插与移除

    c.push_back(elem)    //将一个elem的拷贝附加至容器末尾
    c.pop_back()    // 移除最后一个元素,但是不返回它
    c.push_front(elem)    //将elem的拷贝插入容器头部
    c.pop_front()    //移除头部元素,但是并不返回它
    c.insert(pos,elem)    //在iterator位置pos的前方插入一个elem拷贝,并返回新元素的位置
    c.insert(pos,n,elem)    //在iterator位置pos之前插入elem的n个拷贝,并返回第一个新元素的位置
    c.insert(pos,begin,end)    //在iterator位置pos之前插入区间[begin,end)中的所有元素,返回第一个新元素的位置
    c.insert(pos,initlist)    //在iterator位置pos之前插入初始化列表的一份拷贝,并返回第一个新元素的位置
    c.erase(pos)    //移除iterator位置pos上的元素,返回下一个元素的位置
    c.erase(begin,end)    //移除[begin,end)中的所有元素,返回下一个元素的位置
    c.resize(num)    //将元素的数量改为num,多出来的元素用default构造函数完成初始化
    c.resize(num,elem)    //将元素的数量改为num,多出的元素以elem的拷贝初始化
    c.clear()    //移除所有的元素

    List

    双向队列
  • 非更易型操作

    c.empty()    //返回容器是否为空
    c.size()    //返回目前元素的个数
    c.max_size()    //返回元素个数的最大可能量
  • 元素访问

    c.front()    //返回头部
    c.back()    //返回尾部
    八种迭代器
  • 安插与移除

    c.push_back(elem)    //将一个elem的拷贝附加至容器末尾
    c.pop_back()    // 移除最后一个元素,但是不返回它
    c.push_front(elem)    //将elem的拷贝插入容器头部
    c.pop_front()    //移除头部元素,但是并不返回它
    c.insert(pos,elem)    //在iterator位置pos的前方插入一个elem拷贝,并返回新元素的位置
    c.insert(pos,n,elem)    //在iterator位置pos之前插入elem的n个拷贝,并返回第一个新元素的位置
    c.insert(pos,begin,end)    //在iterator位置pos之前插入区间[begin,end)中的所有元素,返回第一个新元素的位置
    c.insert(pos,initlist)    //在iterator位置pos之前插入初始化列表的一份拷贝,并返回第一个新元素的位置
    c.erase(pos)    //移除iterator位置pos上的元素,返回下一个元素的位置
    c.erase(begin,end)    //移除[begin,end)中的所有元素,返回下一个元素的位置
    c.remove(vlal)    //移除所有其值为val的元素
    c.remove_if(op)    //移除所有造成op结果为true的元素
    c.resize(num)    //将元素的数量改为num,多出来的元素用default构造函数完成初始化
    c.resize(num,elem)    //将元素的数量改为num,多出的元素以elem的拷贝初始化
    c.clear()    //移除所有的元素
  • 容器特有操作

    c.unique()    //如果存在若干相邻而数值相同的元素,就移除重复元素,只留一个
    c.unique(op)    //如果存在若干相邻元素都使op的结果为true,则移除重复元素,只留一个
    c.splice(pos,c2)    //将c2内的元素move到c之内,迭代器pos之前
    c.splice(pos,c2,c2pos)    //将c2内c2pos所指的元素转移到c内的pos所指位置之前
    c.splice(pos,c2,c2beg,c2end)    //将c2内的某一个范围的元素转移到pos之前
    c.sort()    //以<为准则对所有的元素进行排序
    c.sort(op)    //以op为准则对所有元素排序
    c.merge(c2)    //将c和c2的元素进行合并
    c.merge(c2,op)    //将c和c2的元素按照op的准则进行排序
    c.reverse()    //讲所有的元素反序

    Set

    set在插入时是自动排序的,且自动排序的优点使得查找时具有良好的性能。但是自动排序有一个重要的限制:不能直接改变元素值。改变元素值的唯一方法是:删除旧元素,插入新元素。元素值是常量。
  • 创建

    set<Elem>    //以<为排序准则
    set<Elem,Op>    //以Op为排序准则
    multiset<Elem>    //以<为排序准则
    multiset<Elem,Op>    //以Op为排序准则
  • 非更易型操作

    c.key_comp()    //返回“比较准则”
    c.value_comp()    //返回针对Value的比较准则
    c.empty()    
    c.size()    
    c.max_size()    
  • 特殊的查找函数

    c.count(val)    //返回元素值为val的元素
    c.find(val)    //返回元素值为val的第一个元素,如果没有就返回end()
    c.lower_bound(val)    //返回val的第一个可安插的位置,也就是元素值>=val的第一个元素位置
    c.upper_bound(val)    //返回val的最后一个可安插位置,也就是元素值>=val的最后一个元素位置
    c.equal_range(val)    //返回val的可被安插的第一个和最后一个位置,也就是元素值==val的元素区间,返回pair类型
  • 安插与移除

    c.insert(val)    
    c.insert(pos,val)    
    c.insert(beg,end)    
    c.insert(initlist)    
    c.erase(val)    
    c.erase(pos)    
    c.erase(beg.end)    
    c.clear()    

    Map

    Map的Key是常量数据,Value是可更改的,实现方式为红黑树
  • 创建

    map<key,value>    //按照<排序
    map<key,value,Op>    //按照Op排序
    multimap<key,value>    //按照<排序
    mutilmap<key,value,Op>    //Op为排序准则
  • 非更易性操作

    c.key_comp()    //返回比较准则
    c.value_comp()    //返回针对value的比较准则
    c.empty()    
    c.size()
    c.max_size()
  • 特殊查找动作

    c.count(val)    //返回key为value的元素个数
    c.find(val)    //返回key为value的第一个元素,找不到就返回end()
    c.lower_bound(val)    //返回key为val的第一个可安插位置
    c.upper_bound(val)    //返回key为val的最后一个可安插位置
    c.equal_range(val)    //返回key为val的第一个和最后一个可安插位置区间
  • 安插与移除

    c.insert(val)    //安插一个val的拷贝,并且返回新元素的位置
    c.insert(pos,val)    //安插val的拷贝,并且返回新元素的位置
    c.insert(beg,end)    //拷贝安插
    c.insert(initlist)    //拷贝安插
    c.erase(val)    //移除与val相等的所有元素,返回被移除的元素个数
    c.erase(beg,end)    //无返回值
    c.erase(pos)    //移除pos上的元素,无返回值
    c.clear()    

    Unordered

  • 创建
    ```

    include

    include

unordered_set

- 布局操作

c.hash_function() //返回hash函数
c.key_eq() //返回判断式
c.bucket_count() //返回当前的buckets个数
c.max_bucket_count() //返回bucket的最大可能数量
c.load_factor() //返回当前的负载系数
c.max_load_factor() //返回当前的最大负载系数
c.max_load_factor(value) //设定最大负载系数
c.rehash(bnum) //将容器rehash,使其bucket个数至少为bnum
c.resever(num) //将容器rehash,使其空间至少可以拥有num个元素

- 非更易性操作

c.empty()
c.size()
c.max_size()

- 特殊查找操作

c.count(val) //返回”元素值为val“的个数
c.find() //返回“元素值为val”的第一个元素,如果找不到就返回val
c.equal_range(val) //返回val可被安插的第一个位置和最后一个位置,也就是“元素值==val”的元素区间

- 安插和移除元素

c.insert(val)
c.insert(pos,val)
c.insert(beg,end)
c.erase(val)
c.erase(pos)
c.erase(beg,end)
c.clear()

- Bucket接口

c.count_bucket() //返回当前的Bucket个数
c.bucket(val) //返回val将被找到的那个Bucket的编号
c.bucket_size(buckidx) //返回第buckidx个bucket所含元素的个数
c.begin(buckidx) //返回一个Forward Iterator,指向第buckidx个bucket中的第一个元素
c.end(buckidx) //返回一个Forward Iterator,指向第buckidx个bucket中的最末元素的下一个位置
c.cbegin(buckidx)
c.cend(buckidx)

##Stack

push()
top()
pop()

##Queue

push()
front()
back()
pop()

##Priority Queue

push()
top()
pop()

##Bitset

Bitset

猜你喜欢

转载自www.cnblogs.com/ukernel/p/9191129.html