娄卫健 的 主 页
「新生实践课作业」
班级主页 寝室主页

vector

代码算法复杂度返回值类型含义
c.front()O ( 1 )引用返回容器中的第一个数据
c.back()O ( 1 )引用返回容器中的最后一个数据
c.at(idx)引用返回 c[idx] ,会进行边界检查,如果越界会报错,比直接使用 [] 更好一些,常在项目中使用
c.size()O ( 1 )返回实际数据个数(unsigned类型)
c.begin()O ( 1 )迭代器返回首元素的迭代器(通俗来说就是地址)
c.end()O ( 1 )迭代器返回最后一个元素后一个位置的迭代器(地址)
c.empty()O ( 1 )bool判断是否为空,为空返回真,反之返回假
c.reserve(sz)为数组提前分配sz的内存大小,即改变了 capacity 的大小,主要是为了防止在 push_back 过程中多次的内存拷贝
c.assign(beg, end)将另外一个容器[x.begin(), x.end()) 里的内容拷贝到c中
c.assign(n, val)将n 个val值拷贝到c数组中,这会清除掉容器中以前的内容,c数组的size将变为n,capacity 不会改变
c.pop_back()O ( 1 )删除最后一个数据
c.push_back(element)O ( 1 )在尾部加一个数据
c.emplace_back(ele)O ( 1 )在数组中加入一个数据,和 push_back 功能基本一样,在某些情况下比它效率更高,支持传入多个构造参数
c.clear()O ( N )清除容器中的所有元素
c.resize(n, v)改变数组大小为n,n个空间数值赋为v,如果没有默认赋值为0
c.insert(pos, x)O ( N )向任意迭代器pos插入一个元素x
例:c.insert(c.begin() + 2, -1)将-1插入c[2]的位置
c.erase(first, last)O ( N )删除[first, last)的所有元素

Stack

代码含义
s.push(ele)元素ele入栈,增加元素 O ( 1 )
s.pop()移除栈顶元素 O ( 1 )
s.top()取得栈顶元素(但不删除)O ( 1 )
s.empty()检测栈内是否为空,空为真 O ( 1 )
s.size()返回栈内元素的个数 O ( 1 )

qeque

代码含义
q.front()返回队首元素 O ( 1 ) O(1)O(1)
q.back()返回队尾元素 O ( 1 ) O(1)O(1)
q.push(element)尾部添加一个元素element 进队O ( 1 ) O(1)O(1)
q.pop()删除第一个元素 出队 O ( 1 ) O(1)O(1)
q.size()返回队列中元素个数,返回值类型unsigned int O ( 1 ) O(1)O(1)
q.empty()判断是否为空,队列为空,返回true O ( 1 ) O(1)O(1)

deque

代码含义
push_back(x)/push_front(x)把x插入队尾后 / 队首 O ( 1 ) O(1)O(1)
back()/front()返回队尾 / 队首元素 O ( 1 ) O(1)O(1)
pop_back() / pop_front()删除队尾 / 队首元素 O ( 1 ) O(1)O(1)
erase(iterator it)删除双端队列中的某一个元素
erase(iterator first,iterator last)删除双端队列中[first,last)中的元素
empty()判断deque是否空 O ( 1 ) O(1)O(1)
size()返回deque的元素数量 O ( 1 ) O(1)O(1)
clear()清空deque

priority_queue

代码含义
q.top()访问队首元素 O ( 1 ) O(1)O(1)
q.push()入队 O ( l o g N ) O(logN)O(logN)
q.pop()堆顶(队首)元素出队 O ( l o g N ) O(logN)O(logN)
q.size()队列元素个数 O ( 1 ) O(1)O(1)
q.empty()是否为空 O ( 1 ) O(1)O(1)
注意没有clear()!不提供该方法
优先队列只能通过top()访问队首元素(优先级最高的元素)
priority_queue<int> pq; *//* *默认大根堆, 即每次取出的元素是队列中的最大值*
priority_queue<int, vector<int>, greater<i //定义的比较结构体
//注意:cmp是个结构体 
struct cmp {//自定义堆的排序规则 
   bool operator()(const Point& a,const Point& b) {
      return a.x < b.x;

map

代码含义复杂度
mp.find(key)返回键为key的映射的迭代器 注意:用find函数来定位数据出现位置,它返回一个迭代器。当数据存在时,返回数据所在位置的迭代器,数据不存在时,返回m p . e n d ( )O ( l o g N )
mp.erase(it)删除迭代器对应的键和值O ( l o g N )
mp.erase(key)根据映射的键删除键和值O ( l o g N )
mp.erase(first,last)删除左闭右开区间迭代器对应的键和值O ( l a s t − f i r s t )
mp.size()返回映射的对数O ( 1 )
mp.clear()清空map中的所有元素O ( N )
mp.insert()插入元素,插入时要构造键值对O ( l o g N )
mp.empty()如果map为空,返回true,否则返回falseO ( 1 )
mp.begin()返回指向map第一个元素的迭代器(地址)O ( 1 )
mp.end()返回指向map尾部的迭代器(最后一个元素的下一个地址)O ( 1 )
mp.rbegin()返回指向map最后一个元素的迭代器(地址)O ( 1 )
mp.rend()返回指向map第一个元素前面(上一个)的逆向迭代器(地址)O ( 1 )
mp.count(key)查看元素是否存在,因为map中键是唯一的,所以存在返回1,不存在返回0O(log n)
mp.lower_bound()返回一个迭代器,指向键值>= key的第一个元素
mp.upper_bound()返回一个迭代器,指向键值> key的第一个元素

set

代码复杂度含义
s.begin()O ( 1 ) O(1)O(1)返回set容器的第一个元素的地址(迭代器)
s.end()O ( 1 ) O(1)O(1)返回set容器的最后一个元素的下一个地址(迭代器)
s.rbegin()O ( 1 ) O(1)O(1)返回逆序迭代器,指向容器元素最后一个位置
s.rend()O ( 1 ) O(1)O(1)返回逆序迭代器,指向容器第一个元素前面的位置
s.clear()O ( N ) O(N)O(N)删除set容器中的所有的元素,无返回值
s.empty()O ( 1 ) O(1)O(1)判断set容器是否为空
s.insert(element)O ( l o g N ) O(logN)O(logN)插入一个元素
s.size()O ( 1 ) O(1)O(1)返回当前set容器中的元素个数
erase(iterator)O ( l o g N ) O(logN)O(logN)删除定位器iterator指向的值
erase(first, second)删除定位器first和second之间的值
erase(key_value)O ( l o g N ) O(logN)O(logN)删除键值key_value的值
查找
s.find(element)查找set中的某一元素,有则返回该元素对应的迭代器,无则返回结束迭代器
s.count(element)查找set中的元素出现的个数,由于set中元素唯一,此函数相当于查询element是否出现
s.lower_bound(k)O ( l o g N ) O(logN)O(logN)返回大于等于k的第一个元素的迭代器
s.upper_bound(k)O ( l o g N ) O(logN)O(logN)返回大于k的第一个元素的迭代器

string

代码含义
s.push_back()在末尾插入
例:s.push_back('a')末尾插入一个字符a
s.insert(pos,element)在pos位置插入element
例:s.insert(s.begin(),'1')在第一个位置插入1字符
s.append(str)在s字符串结尾添加str字符串
例:s.append("abc")在s字符串末尾添加字符串“abc”
erase(iterator p)删除字符串中p所指的字符
erase(iterator first, iterator last)删除字符串中迭代器区间[first,last)上所有字符
erase(pos, len)删除字符串中从索引位置pos开始的len个字符
clear()删除字符串中所有字符
s.replace(pos,n,str)把当前字符串从索引pos开始的n个字符替换为str
s.replace(pos,n,n1,c)把当前字符串从索引pos开始的n个字符替换为n1个字符c
s.replace(it1,it2,str)把当前字符串[it1,it2)区间替换为str it1 ,it2为迭代器哦
stoi(s) 将字符串 s 转化为 int 类型 stoll(s) 将字符串 s 转化为 long long int 类型 stod(s) 将字符串 s 转化为 double 类型 stold(s) 将字符串 s 转化为 long double 类型 s.push_back()在末尾插入
例:s.push_back('a')末尾插入一个字符a
s.insert(pos,element)在pos位置插入element
例:s.insert(s.begin(),'1')在第一个位置插入1字符
s.append(str)在s字符串结尾添加str字符串
例:s.append("abc")在s字符串末尾添加字符串“abc”
s.substr(pos,n) 截取从pos索引开始的n个字符 s.find (str, pos)在当前字符串的pos索引位置(默认为0)开始,查找子串str,返回找到的位置索引,-1表示查找不到子串
s.find (c, pos)在当前字符串的pos索引位置(默认为0)开始,查找字符c,返回找到的位置索引,-1表示查找不到字符
s.rfind (str, pos)在当前字符串的pos索引位置开始,反向查找子串s,返回找到的位置索引,-1表示查找不到子串
s.rfind (c,pos)在当前字符串的pos索引位置开始,反向查找字符c,返回找到的位置索引,-1表示查找不到字符
s.find_first_of (str, pos)在当前字符串的pos索引位置(默认为0)开始,查找子串s的字符,返回找到的位置索引,-1表示查找不到字符
s.find_first_not_of (str,pos)在当前字符串的pos索引位置(默认为0)开始,查找第一个不位于子串s的字符,返回找到的位置索引,-1表示查找不到字符
s.find_last_of(str, pos)在当前字符串的pos索引位置开始,查找最后一个位于子串s的字符,返回找到的位置索引,-1表示查找不到字符
s.find_last_not_of ( str, pos)在当前字符串的pos索引位置开始,查找最后一个不位于子串s的字符,返回找到的位置索引,-1表示查找不到子串
娄卫健的个人主页(新生实践课)
华中科技大学