C++学习之标准库泛型算法_STL算法
2014-08-15 22:20
471 查看
参见http://www.cplusplus.com/reference/std/
标准库中的算法主要在algorithm、numeric两个头文件,注意有些是只能在C++11下使用,比如all_of,any_of。还有就是标准库算法的参数在C98下是需要程序员来确保正确的比如:
template <class OutputIterator, class Size, class T> OutputIterator fill_n (OutputIterator first, Size n, const T& val)
的参数n为非负,还有一些算法的迭代器范围的有效性也需要确保正确,否则会引起未定义的行为。
下面列出这两个头文件中的函数名和功能简介,具体算法模板的实现、复杂度、实例请参考上面的链接。
Functions in <algorithm>
Non-modifying sequence operations:all_of
Test condition on all elements in range (function template )
any_of
Test if any element in range fulfills condition (function template )
none_of
Test if no elements fulfill condition (function template )
for_each
Apply function to range (function template )
find
Find value in range (function template )
find_if
Find element in range (function template )
find_if_not
Find element in range (negative condition) (function template )
find_end
Find last subsequence in range (function template )
find_first_of
Find element from set in range (function template )
adjacent_find
Find equal adjacent elements in range (function template )
count
Count appearances of value in range (function template )
count_if
Return number of elements in range satisfying condition (function template )
mismatch
Return first position where two ranges differ (function template )
equal
Test whether the elements in two ranges are equal (function template )
is_permutation
Test whether range is permutation of another (function template )
search
Search range for subsequence (function template )
search_n
Search range for elements (function template )
Modifying sequence operations:
copy
Copy range of elements (function template )
copy_n
Copy elements (function template )
copy_if
Copy certain elements of range (function template )
copy_backward
Copy range of elements backward (function template )
move
Move range of elements (function template )
move_backward
Move range of elements backward (function template )
swap
Exchange values of two objects (function template )
swap_ranges
Exchange values of two ranges (function template )
iter_swap
Exchange values of objects pointed by two iterators (function template )
transform
Transform range (function template )
replace
Replace value in range (function template )
replace_if
Replace values in range (function template )
replace_copy
Copy range replacing value (function template )
replace_copy_if
Copy range replacing value (function template )
fill
Fill range with value (function template )
fill_n
Fill sequence with value (function template )
generate
Generate values for range with function (function template )
generate_n
Generate values for sequence with function (function template )
remove
Remove value from range (function template )
remove_if
Remove elements from range (function template )
remove_copy
Copy range removing value (function template )
remove_copy_if
Copy range removing values (function template )
unique
Remove consecutive duplicates in range (function template )
unique_copy
Copy range removing duplicates (function template )
reverse
Reverse range (function template )
reverse_copy
Copy range reversed (function template )
rotate
Rotate left the elements in range (function template )
rotate_copy
Copy range rotated left (function template )
random_shuffle
Randomly rearrange elements in range (function template )
shuffle
Randomly rearrange elements in range using generator (function template )
Partitions:
is_partitioned
Test whether range is partitioned (function template )
partition
Partition range in two (function template )
stable_partition
Partition range in two - stable ordering (function template )
partition_copy
Partition range into two (function template )
partition_point
Get partition point (function template )
Sorting:
sort
Sort elements in range (function template )
stable_sort
Sort elements preserving order of equivalents (function template )
partial_sort
Partially sort elements in range (function template )
partial_sort_copy
Copy and partially sort range (function template )
is_sorted
Check whether range is sorted (function template )
is_sorted_until
Find first unsorted element in range (function template )
nth_element
Sort element in range (function template )
Binary search (operating on partitioned/sorted ranges):
lower_bound
Return iterator to lower bound (function template )
upper_bound
Return iterator to upper bound (function template )
equal_range
Get subrange of equal elements (function template )
binary_search
Test if value exists in sorted sequence (function template )
Merge (operating on sorted ranges):
merge
Merge sorted ranges (function template )
inplace_merge
Merge consecutive sorted ranges (function template )
includes
Test whether sorted range includes another sorted range (function template )
set_union
Union of two sorted ranges (function template )
set_intersection
Intersection of two sorted ranges (function template )
set_difference
Difference of two sorted ranges (function template )
set_symmetric_difference
Symmetric difference of two sorted ranges (function template )
Heap:
push_heap
Push element into heap range (function template )
pop_heap
Pop element from heap range (function template )
make_heap
Make heap from range (function template )
sort_heap
Sort elements of heap (function template )
is_heap
Test if range is heap (function template )
is_heap_until
Find first element not in heap order (function template )
Min/max:
min
Return the smallest (function template )
max
Return the largest (function template )
minmax
Return smallest and largest elements (function template )
min_element
Return smallest element in range (function template )
max_element
Return largest element in range (function template )
minmax_element
Return smallest and largest elements in range (function template )
Other:
lexicographical_compare
Lexicographical less-than comparison (function template )
next_permutation
Transform range to next permutation (function template )
prev_permutation
Transform range to previous permutation (function template )
Functions in <numeric>
accumulateAccumulate values in range (function template )
adjacent_difference
Compute adjacent difference of range (function template )
inner_product
Compute cumulative inner product of range (function template )
partial_sum
Compute partial sums of range (function template )
iota
Store increasing sequence (function template )
相关文章推荐
- C++学习之标准库泛型算法_STL算法
- C++学习笔记24——泛型算法之find
- C++学习笔记29——泛型算法之插入迭代器
- C++学习笔记25——泛型算法之写入容器
- C++学习笔记27——泛型算法之统计(accumate count)
- C++ Primer 学习笔记:泛型算法入门 find && accumulate && equal
- C++学习笔记--泛型算法
- C++学习之泛型算法概述--摘自C++primer4
- C++学习笔记28——泛型算法之iostream迭代器
- C++学习整理(泛型算法)
- C++学习笔记【第二部分第十章:泛型算法】
- c++学习9之泛型算法
- [学习]C++ STL(自定义泛型算法)
- C++ Primer 学习笔记_45_STL实践与分析(19)--泛型算法的结构
- C++学习笔记26——泛型算法之容器元素排序(sort unique)
- C++ 学习笔记 2.1 : 容器和算法(顺序容器、关联容器、泛型算法)
- C++ 学习笔记(10)泛型算法、lambda表达式、bind函数、迭代器
- C++与C#对比学习:模板,泛型
- c++ 泛型算法 使用方法总结
- 【C++ STL学习之六】STL算法之for_each