首页 > 代码库 > 泛型编程与stl
泛型编程与stl
1、理解concept与model的关系
iterator concepts: input iterator 、output iterator、forward iterator、bidirectional
iterator及random access iterator
2、iterator Traits与Associated Types
value_type、difference_type
、reference_type和pointer_type
iterator_category
3、function object concepts:
Generator、Unary Function和Binary Function
4、Container concepts:
Container(input iterator)-->forward Container(forward iterator)-->Reversible Container
(bidirectional iterator)-->Random Access Container(Random access iterator)
Sequences Concepts: 是forward container的强化
stl中包含三种:vector、list和deque
back insertion sequence和front insert sequence
注意安插语义和覆盖语义
associative containers concepts: 是forward container的强化
simple 和 pair
unique 和 multiple
hashed 和 sorted
5、allocators:
6、basic concepts:
assignable:
default constructible:
equality comparable:
lessthan comparable:
strict weakly comparable:如果两元素具有任何一个都不小于另一个的性质,那么将之视为具备某种程度
之等价关系是合理的。
7、iterators:
trivial iterator:
input iterator:
output iterator:不必具有任何特定的“value type”
8、function objects
function objects和adaptable function objects区别:后者是能够被转换为或被用来操作其他function
objects的一种function objects。其嵌套定义了返回类型和参数类型(具体要看adaptable类型)。
predicates:与对应的function object concept完全相同的相关类型,但返回类型必须可以转换为bool
adaptable predicate:
strict weak ordering:
与binary predicate相同的associated types,但有一个额外限制:第一第二参数必须相同。
Random Number Generator:
Hash Function:
10、constructor 和destroy
uninitialized_copy、uninitialized_fill和uninitialized_fill_n
get_temporary_buffer、return_temporary_buffer
11、线性查找:
find、find_if、adjacent_find
find_first_of
12、子序列匹配
search、find_end、search_n
13、计算元素个数
count、count_if
14、for_each
15、比较两个Ranges
equal、mismatch、lexicographical_compare(字典排序法)
16、最大值和最小值
min和max min_element和max_element
17、拷贝某个区间
copy:只能为元素赋新的值而不是产生新的元素,copy不能直接用来将元素安插于空的container之中。
copy_backward:
18、互换元素
swap、iter_swap(很少使用)、swap_ranges
19、transform
20、替换元素
replace、replace_if、replace_copy、replace_copy_if
21、填充整个区间
fill、fill_n、generate、generate_n
22、移除元素:
remove(不会改变container的大小,只是返回一个新的new_last)、remove_if、remove_copy、
remove_copy_if、unique(只对相邻元素进行测试)、unique_copy
23、排列算法
reverse、reverse_copy、rotate、rotate_copy、next_permutation、prev_permutation
24、分割
partition、stable_partition
25、随机重排与抽样
random_shuffle、random_sample、random_sample_n
26、一般化之数值算法
accumulate、inner_product、partial_sum、adjacent_difference
27、排序和查找
sort、stable_sort、partial_sort、partial_sort_copy、nth_element
is_sorted
28、sorted ranges上的操作行为
二分查找法
binary_search、lower_bound、upper_bound、equal_range
合并两个sorted ranges
merge、implace_merge
在sorted ranges身上执行集合相关操作
includes、set_union、set_intersection、set_difference、set_symmetric_difference
29、堆的相关操作
make_heap、push_heap、pop_heap、sort_heap、is_heap
30、insert iterators
front_insert_iterator对应辅助函数 front_inserter
back_insert_iterator对应辅助函数 back_inserter
insert_iterator对应辅助函数inserter
31、stream iterators
istream_iterator
ostream_iterator
istreambuf_iterator
ostreambuf_iterator
32、reverse_iterator
33、raw_storage_iterator
34、Function object Base Classes
unary_function、binary_function
35、算术运算
plus、minus、multiplies、divides、modulus、negate
36、大小比较
equal_to、not_equal_to、less、greater、less_equal、greater_equal
37、逻辑运算
38、证同与投射
select1st、select2nd
39、特殊的function objects
hash、subtractive_rng
40、member function adapters(面向对象编程与泛型编程之间的桥梁)
mem_fun和mem_fun_ref
41、其他的adapters
binder1st、binder2nd、pointer_to_unary_dunction辅助函数ptr_fun、
pointer_to_binary_function辅助函数ptr_fun
unary_negate==》not1
binary_negate==>not2
unary_compose==>compose1 函数合成
binary_compose==>compose2
42、container classes
sequences:vector、deque、list
associative containers:set、map
43、container adapeters
stack、queue、priority_queue
泛型编程与stl