STL(二)之容器函数

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<unordered_map>
#include<unordered_set> unordered_set<Elem> unordered_set<Elem,Hash> unordered_set<Elem,Hash,Cmp> unordered_multiset<Elem> unordered_multiset<Elem,Hash> unordered_multiset<Elem,Hash,Cmp> unordered_map<Key,Value> unordered_map<Key,Value,Hash> unordered_map<Key,Value,hash,Cmp> unordered_map<Key,Value> unordered_map<Key,Value,Hash> unordered_map<Key,Value,hash,Cmp>
  • 布局操作
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<n> bs        //初始化位图的数量
bool any() //是否存在所有二进制位为1的个数 bool none() //是否存在所有二进制位为0的个数 size_t count() //返回二进制个数为1的位数 size_t size() //返回二进制的位数 void flip() //将所有的二进制位取反 void flip(size_t pos) //将pos位置的二进制位取反 void set() //将所有的二进制位置为1 void set(pos) //将pos处的二进制置为1 void reset() //将所有的二进制位置为0 void reset(pos) //将pos处的二进制位置为0 bool test(pos) //测试pos处的二进制位是否是1 string to_string() //返回对应的字符串

转载于:https://www.cnblogs.com/xcb-1024day/p/11332403.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值