STL 常用API汇总
包括:
常用的STL库接口(vector,deque,list,stack,queue,priority_queue,ste,map)
string的用法
1 | container<T>::iterator name //迭代器名称 |
总括
此贴写的比较早,STL的一些思想和细节并没有触及到,留个坑,后面补,单纯记忆这些接口没有意义
vector
vector<T> name(size)
establish
- 元素访问
v.front()
首v.at(pos)
=v[pos]
返回下标值v.back()
末v.date()
返回指向第一个元素指针
- 迭代器
v.begin()
返回首元素迭代器v.end()
末
- 长度、容量
v.empty()
返回true
或false
v.size()
元素数量v.resize(new_size,(new_ele_value))
修改大小v.max_size()
最大长度v.reserve(size)
预留空间v.capacity()
容器当前容量
- 元素修改
clear()
清除insert(pos,val)
orinsert(pos,size,val)
erase()
push_buck(val)
尾端插入pop_back()
尾端删除swap()
交换
deque
deque<T> name(size)
establish
- 元素访问
at(pos)
=dq[pos]
返回值front()
首back()
末
迭代器、长度与
vector
相同修改
clear()
清除insert(pos,val)
orinsert(pos,size,val)
erase()
push_front(val)
头部插入pop_front()
头部删除push_buck(val)
尾端插入pop_back()
尾端删除swap()
交换
list
list
与deque
基本相同
stack
stack<T> name
establishstack<T> copy(initial)
copy
top()
栈顶元素push(ele)
插入pop()
弹出栈顶元素size()
大小empty()
queue
queue<T> name
establishqueue<T> copy(initial)
copy
front()
首元素push(ele)
插入pop()
弹出队首元素size()
大小empty()
priority queue
priority_queue<T> name
常数复杂度:
top()
堆顶元素size()
数量empty()
对数复杂度:
push(ele)
插入pop()
删除
set
multiset:多重集合
set<T> name
multiset<T> name
repeatable
- 插入删除
insert(ele)
插入(unreaptable)erase(val)
、erase(iterator_pos)
、erase(iterator_first,last)
删除clear()
清空
- 迭代器
begin()
end()
c意为只读,const:
cbegin()
cend()
- 查找
find(ele)
找到返回元素的迭代器,否则返回end()
count(ele)
ele数量(set为0
或1
)lower_bound(ele)
返回首个不小于ele
的迭代器,没有返回end()
upper_bound(ele)
返回首个大于ele
的迭代器,没有返回end()
empty()
size()
map
multimap:多重映射
map<Key, T> name
establishmp[Key]=T
查询删改
- 插入删除
mp.insert(pair<Key, T>(Key,T))
插入erase(val)
、erase(iterator_pos)
、erase(iterator_first,last)
删除clear()
- 查询
find(ele)
找到返回元素的迭代器,否则返回end()
count(ele)
ele数量(set为0
或1
)lower_bound(ele)
返回首个不小于ele
的迭代器,没有返回end()
upper_bound(ele)
返回首个大于ele
的迭代器,没有返回end()
empty()
size()
string
string
的操作有很多,以下是部分整理,完整请看:参考链接
string
用字典序比较
std::string name
establishc_str()/date()
转化为char指针
s.copy(char*,len,pos)
返回size_t len
- 输入/输出
operator<<
operator>>
getline(std::cin,input_str)
cin
可为其他istream
- 长度
size()/length()
(常数)strlen(s.c_str())
(线性)max_size()
- 查找
find(str,pos)
查找str
在pos
(默认0
)之后的第一次出现,否则返回string::npos
(-1
)substr(pos, len)
从pos
开始截取字串(最长为len
)
- 增删
insert(pos,times,ch)
在pos
处连续插入times
次ch
字符insert(pos,str)
在pos
处插入str
erase(pos,count)
删除pos
后count
个字符,count
默认pos
后所有clear()
operator[]
at(pos)
back()
front()
push_back(c)
pop_back()
弹出末字符
- 替换
replace(pos,count,str)
从pos
位置开始count
个字符的子串替换为str
replace(first,last,str)
将[first,last)
的子串替换为str
(first
和last
均为迭代器)
- 迭代器
begin()
&end()
C++11 哈希-无序关联式容器
C++11有四种:unordered_map
、unordered_map
、unordered_multimap
、unordered_multiset