STL 常用API汇总

包括:

常用的STL库接口(vector,deque,list,stack,queue,priority_queue,ste,map)

string的用法

1
2
container<T>::iterator name //迭代器名称
typedef container::iterator itname //简写

总括

此贴写的比较早,STL的一些思想和细节并没有触及到,留个坑,后面补,单纯记忆这些接口没有意义

vector

  • vector<T> name(size) establish
  1. 元素访问
  • v.front()
  • v.at(pos)=v[pos]返回下标值
  • v.back()
  • v.date()返回指向第一个元素指针
  1. 迭代器
  • v.begin() 返回首元素迭代器
  • v.end()
  1. 长度、容量
  • v.empty() 返回truefalse

  • v.size() 元素数量

  • v.resize(new_size,(new_ele_value))修改大小

  • v.max_size()最大长度

  • v.reserve(size)预留空间

  • v.capacity()容器当前容量

  1. 元素修改
  • clear()清除
  • insert(pos,val)orinsert(pos,size,val)
  • erase()
  • push_buck(val)尾端插入
  • pop_back() 尾端删除
  • swap() 交换

deque

  • deque<T> name(size) establish
  1. 元素访问
  • at(pos)=dq[pos]返回值
  • front()
  • back()
  1. 迭代器、长度与vector相同

  2. 修改

  • clear()清除
  • insert(pos,val)orinsert(pos,size,val)
  • erase()
  • push_front(val) 头部插入
  • pop_front() 头部删除
  • push_buck(val)尾端插入
  • pop_back() 尾端删除
  • swap() 交换

list

listdeque基本相同

stack

  • stack<T> name establish
  • stack<T> copy(initial)copy
  1. top()栈顶元素
  2. push(ele) 插入
  3. pop()弹出栈顶元素
  4. size() 大小
  5. empty()

queue

  • queue<T> name establish
  • queue<T> copy(initial)copy
  1. front()首元素
  2. push(ele) 插入
  3. pop()弹出队首元素
  4. size() 大小
  5. empty()

priority queue

  • priority_queue<T> name

常数复杂度:

  1. top()堆顶元素
  2. size() 数量
  3. empty()

对数复杂度:

  1. push(ele)插入
  2. pop()删除

set

multiset:多重集合

  • set<T> name
  • multiset<T> name repeatable
  1. 插入删除
  • insert(ele) 插入(unreaptable)
  • erase(val)erase(iterator_pos)erase(iterator_first,last)删除
  • clear()清空
  1. 迭代器
  • begin()
  • end()

c意为只读,const:

  • cbegin()
  • cend()
  1. 查找
  • find(ele)找到返回元素的迭代器,否则返回end()
  • count(ele)ele数量(set为01)
  • lower_bound(ele)返回首个不小于ele的迭代器,没有返回end()
  • upper_bound(ele)返回首个大于ele的迭代器,没有返回end()
  • empty()
  • size()

map

multimap:多重映射

  • map<Key, T> name establish
  • mp[Key]=T查询删改
  1. 插入删除
  • mp.insert(pair<Key, T>(Key,T))插入
  • erase(val)erase(iterator_pos)erase(iterator_first,last)删除
  • clear()
  1. 查询
  • find(ele)找到返回元素的迭代器,否则返回end()
  • count(ele)ele数量(set为01)
  • lower_bound(ele)返回首个不小于ele的迭代器,没有返回end()
  • upper_bound(ele)返回首个大于ele的迭代器,没有返回end()
  • empty()
  • size()

string

string的操作有很多,以下是部分整理,完整请看:参考链接

string用字典序比较

  • std::string name establish
  • c_str()/date()转化为char指针
  • s.copy(char*,len,pos)返回size_t len
  1. 输入/输出
  • operator<<
  • operator>>
  • getline(std::cin,input_str) cin可为其他istream
  1. 长度
  • size()/length()(常数)
  • strlen(s.c_str())(线性)
  • max_size()
  1. 查找
  • find(str,pos)查找strpos(默认0)之后的第一次出现,否则返回string::npos(-1)
  • substr(pos, len)pos开始截取字串(最长为len
  1. 增删
  • insert(pos,times,ch)pos处连续插入timesch字符
  • insert(pos,str)pos处插入str
  • erase(pos,count)删除poscount个字符,count默认pos后所有
  • clear()
  • operator[]
  • at(pos)
  • back()
  • front()
  • push_back(c)
  • pop_back()弹出末字符
  1. 替换
  • replace(pos,count,str)pos位置开始count个字符的子串替换为str
  • replace(first,last,str)[first,last)的子串替换为strfirstlast均为迭代器)
  1. 迭代器
  • begin() & end()

C++11 哈希-无序关联式容器

C++11有四种:unordered_mapunordered_mapunordered_multimapunordered_multiset

参考链接

[1].https://cplusplus.com/