STL 总结
来源:互联网 发布:淘宝买洗衣机可靠吗 编辑:程序博客网 时间:2024/05/01 21:05
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie
1.C++模板
函数模板:独立于类型的函数,可产生函数的特定版本
类模板: 独立于类型的类,可产生类的特定版本,如vectot<int>
2.stl 头文件
头文件
内容
头文件
内容
<iterator>
迭代器
<vector>
向量
<utility>
辅助功能
<deque>
双头队列
<memory>
内存管理
<list>
链表
<algorithm>
算法
<set>
集合与多重集合
<functional>
函数对象
<map>
映射与多重映射
<numeric>
数值运算
<stack>
栈
<queue>
队列与优先队列
3.容器
1)顺序容器
vector:后部插入/删除,直接访问
实际上就是个动态数组,每次空间不够时会double它的存储空间。随机存取任何元素都能在常数时间完成。在尾端增删元素具有较佳的性能。
deque:前/后部插入/删除,直接访问
也是个动态数组,随机存取任何元素都能在常数时间完成(但性能次于vector)。在两端增删元素具有较佳的性能。
list:双向链表,任意位置插入/删除
双向链表,在任何位置增删元素都能在常数时间完成。不支持随机存取。
2)关联容器
set:快速查找,无重复元素
multiset:快速查找,可有重复元素
map:一对一映射,无重复元素,基于关键字查找
multimap:一对一映射,可有重复元素,基于关键字查找
map与set的不同在于map中存放的是成对的key/value。并根据key对元素进行排序,可快速地根据key来检索元素
上述4种容器通常以平衡二叉树方式实现,插入和检索的时间都是O(logN)
3)容器适配器
stack:后进先出
queue:先进先出
priority_queue:优先级高的元素先出
4.迭代器
容器 迭代器类别
vector 随机
deque 随机
list 双向
set/multiset 双向
map/multimap 双向
stack 不支持迭代器
queue 不支持迭代器
priority_queue 不支持迭代器
STL为迭代器提供了三个辅助函数:advance( )、distance( )、iter_swap( )
5.算法
循环
for_each()
对序列中的每个元素执行某操作
查找
find()
在序列中找出某个值的第一次出现的位置
find_if()
在序列中找出符合条件的第一个元素
find_end()
在序列中找出一子序列的最后一次出现的位置
find_first_of()
在序列中找出第一次出现指定值集中之值的位置
adjacent_find()
在序列中找出相邻的一对值
计数
count()
在序列中统计某个值出现的次数
count_if()
在序列中统计符合某个条件的值出现的次数
比较
mismatch()
找出两个序列相异的第一个元素
equal()
两个序列中的对应元素都相同时为真
搜索
search()
在序列中找出一子序列的第一次出现的位置
search_n()
在序列中找出一值的连续n次出现的位置
复制
copy()
从序列的第一个元素起进行复制
copy_backward()
从序列的最后一个元素起进行复制
交换
swap()
交换两个元素
swap_ranges()
交换指定范围的元素
iter_swap()
交换由迭代器所指的两个元素
变换
transform()
将某操作应用于指定范围的每个元素
替换
replace()
用一个给定值替换一些值
replace_if()
替换满足条件的一些元素
replace_copy()
复制序列时用一给定值替换元素
replace_copy_if()
复制序列时替换满足条件的元素
填充
fill()
用一给定值取代所有元素
fill_n()
用一给定值取代前n个元素
生成
generate()
用一操作的结果取代所有元素
generate_n()
用一操作的结果取代前n个元素
删除
remove()
删除具有给定值的元素
remove_if()
删除满足条件的元素
remove_copy()
复制序列时删除具有给定值的元素
remove_copy_if()
复制序列时删除满足条件的元素
剔除
unique()
删除相邻的重复元素
unique_copy()
复制序列时删除相邻的重复元素
反转
reverse()
反转元素的次序
reverse_copy()
复制序列时反转元素的次序
循环
rotate()
循环移动元素
rotate_copy()
复制序列时循环移动元素
随机
random_shuffle()
采用均匀分布来随机移动元素
划分
partition()
将满足某条件的元素都放到前面
stable_partition()
将满足某条件的元素都放到前面并维持原顺序
排序
stable_sort()
排序,并维持相同元素的原有顺序
partial_sort()
将区间个数的元素排好序
partial_sort_copy()
将区间个数的元素排序并复制到别处
第n个元素
nth_element()
将第n各元素放到它的正确位置
二分检索
lower_bound()
找到大于等于某值的第一次出现
upper_bound()
找到大于某值的第一次出现
equal_range()
找到(在不破坏顺序的前提下)可插入给定值的最大范围
binary_search()
在有序序列中确定给定元素是否存在
归并
merge()
归并两个有序序列
inplace_merge()
归并两个接续的有序序列
有序结构上的集合操作
includes()
一序列为另一序列的子序列时为真
set_union()
构造两个集合的有序并集
set_intersection()
构造两个集合的有序交集
set_difference()
构造两个集合的有序差集
堆操作
push_heap()
向堆中加入元素
pop_heap()
从堆中弹出元素
make_heap()
从序列构造堆
sort_heap()
给堆排序
最大和最小
min()
返回两个元素最小值
max()
返回两个元素最大值
min_element()
返回序列中的最小元素的位置
max_element()
返回序列中的最大元素的位置
词典比较
lexicographical_compare()
两个序列按字典序的第一个在前
排列生成器
next_permutation()
按字典序的下一个排列
prev_permutation()
按字典序的前一个排列
accumulate(累积算法)
partial_sum(累加部分元素和算法)
adjacent_difference(相邻元素差)
inner_product(内积算法)
6.函数对象(Function Object)
1. C++STL简介
- 【STL】STL 一般总结
- STL总结
- STL 总结
- STL 总结
- stl总结
- stl总结
- STL总结
- STL 总结
- 总结--STL
- STL总结
- STL 总结
- STL 总结
- STL总结
- STL总结
- Stl总结
- STL总结
- stl 总结
- STL总结
- 搞ACM的伤不起啊!!
- 提防toString递归问题
- FMS安装调试心得
- cocos2d-html5 简易选项卡组件 源码 与实现方法
- python操作redis简单例子
- STL 总结
- python-redis
- bzoj2658: [Zjoi2012]小蓝的好友(mrx)
- NSMUtableDictonary常用用法
- python的redis用法
- 【js设计模式笔记---单体模式】
- Java的访问级别:public(公共),protected(保护),private(私有)
- python&php数据抓取、爬虫分析与中介,有网址案例
- SPID和KPID的区别