STL基本用法总结
STL基本用法总结
目录
vector
- 元素访问:
- [ ]
- 下标访问
- 迭代器访问(解引用迭代器)
- front()
- back()
- [ ]
- 容量
- size()
- empty()
- 修改器
- clear():从容器擦除所有元素
- push_back()
- pop_back()
- insert(pos , val):pos为待插入位置的迭代器——可以是尾后迭代器,val为待插入值
- erase():
- erase(pos):移除位于
pos的元素 - erase(first , last)移除范围
[first; last)中的元素,如果first和last相等,区间为空不删除元素
- erase(pos):移除位于
pair
- 成员对象
- first
- second
- 构造pair
- pair<int , string> p( 1 , "str" );
- pair<int , string> p = { 1 , "str" };
- pair<int , string> p = make_pair( 1 , "str" );
- 临时pair
- pair<int , string> ( 1 , "str" );
- make_pair( 1 , "str" );
- 支持比较运算,以first为第一关键字,second为第二关键字(字典序)
deque
string
- 输入输出
- cin cout
- getline(输入流 , string对象)
- printf("%s\n" , str.c_str()) c_str()可以返回string对象存储字符数组的首地址
- 容量
- size
- empty
- 支持比较运算符 按字典序
- 访问与修改
- +/+= 拼接两个字符串(可以与字符串字面值相加)
- insert()
- insert(pos , str):在pos位置(下标)插入字符串str,str可以是string类对象也可以是字符串常量
- insert(it , it2 , it3):在it(迭代器)处插入[it2 , it3) ,it2 ,it3分别是待插入字符串的首尾迭代器
- erase()
- erase(it)
- erase(first , last):参数为迭代器,左开右闭
- erase(pos , length):参数1为下标, 2为删除长度
- substr(pos , length)
- 返回从pos下标开始,长度为length的子串
- 如果无第二个参数,输出至尾
- 若pos+length-1超出下标范围,同样输出至尾
- clear()
set / multiset
set中无重复元素,multiset可以有
默认升序排序,若想降序:set<int, greater<int>> s
- insert(key):插入一个数,自动递增排序
- find(key):查找一个数,找到对应迭代器。找不到则返回尾后迭代器
- count(key):返回值为key的元素数(set只有0或1)
- erase()
- erase(key):删除所有值为key的
- erase(iter):删除这个迭代器对应元素
- erase(first , last)
- lower_bound(key) :返回指向首个不小于给定键的元素的迭代器
- upper_bound(key):返回指向首个大于给定键的元素的迭代器
- 其他
- clear()
- size()
- empty()
- 迭代器支持++ --
map / multimap
- insert():插入的是一个pair
- find(key):返回指向键等于 key的元素的迭代器。若找不到这种元素,则返回尾后迭代器。
- erase()
- erase(key):删除键为key的元素
- erase(iter):删除这个迭代器对应的元素
- erase(first , last)
- 元素访问
- 使用[ ]通过下标访问:如mp[ 'c' ] = 10
- 使用迭代器:it->first , it->second
- count(key):返回匹配特定键的元素数量
- lower_bound(key):返回指向首个不小于给定键的元素的迭代器
- upper_bound(key):返回指向首个大于给定键的元素的迭代器
- 其他
- clear()
- size()
- empty()
- 迭代器支持++ --
unordered_set / unordered_multiset
unordered_map / unordered_multimap
与前面类似,不过前面是使用红黑树作为底层实现,此处底层实现为哈希表。
增删改查O(1)
不支持lower_bound() , upper_bound()
迭代器支持++,不支持--
容器适配器queue
- 元素访问
- front()
- back()
- 修改器
- push()
- pop()
- 容量
- empty()
- size()
容器适配器stack
- 元素访问
- top()
- 修改器
- push()
- pop()
- 容量
- empty()
- size()
容器适配器priority_queue(优先队列/堆)
默认情况下会建立大根堆,若想建立小根堆priority_queue<int , vector<int> , greater<int>> heap;
-
参数2是承载底层数据结构堆的容器(因为元素类型是int,所以是vector
) -
参数3是对参数1的比较类
- std::greater()
- greater是第一个元素是否比第二个元素更大,如果是返回true否则返回false
- 按greater规则排序会使前一个元素比后一个更大(例如a和b按某规则cmp比较,返回true的话a就排前面)
- 解释:例如小根堆,我们想要新插入元素(在最低层)比其父节点大,那么使用greater规则。greater(newnode , father)
- std::greater()
-
元素访问
- top()
-
修改器
- push()
- pop()
-
容量
- empty()
- size()

浙公网安备 33010602011771号