名称(InputIterator = II,ForwardIterator = FI,RI = 随访迭代器) | 效果 | 复杂度 |
for_each (II beg, II end, UnaryProc op) | 对 [beg, end) 每个元素执行 op 操作 | O(n) |
count (II beg, II end, const T& value) count_if (II beg, II end, UnaryProc op) | 返回 [beg, end) 元素值 == value 个数 返回 [beg, end) op 返回 true 个数 | O(n) |
FI min_element (FI beg, FI end) FI min_element (FI beg, FI end, CompFunc op) FI max_element (FI beg, FI end) FI max_element (FI beg, FI end, CompFunc op) minmax_element (FI beg, FI end) minmax_element (FI beg, FI end, CompFunc op) | 返回 [beg, end) 元素最小值位置 返回 [beg, end) op 排序规则下的最小值位置 返回 [beg, end) 元素最大值位置 返回 [beg, end) op 排序规则下的最大值位置 返回 [beg, end) 元素最小值最大值位置组成的 pair 返回 [beg, end) op 排序规则下元素最小、大值位置组成的 pair | O(n) |
II find (II beg, II end, const T& value) II find_if (II beg, II end, UnaryPredicate op) II find_if_not (II beg, II end, UnaryPredicate op) search_n (FI beg, FI end, Size count, const T& val) search_n (FI beg, FI end, Size count, const T& val, BinaPred op) | 返回 [beg, end) 元素值 == value 的元素位置 返回 [beg, end) op 返回 true 的元素位置 返回 [beg, end) 第一个元素使 op 返回 false 的元素位置 返回 [beg, end) 连续 count 个元素值 == value 的第一个元素的位置 返回 [beg, end) 连续 count 个元素值 造成 op 返回 true 的第一个元素的位置 | O(n) |
adjacent_find (FI beg, FI end) adjacent_find (FI beg, FI end, BinaPred op) | 返回 [beg, end) 内第一对“连续两个相等元素”中的第一个元素的位置 返回 [beg, end) 内第一对“连续两个元素造成 op 返回 true”的第一个元素的位置 | O(n) |
mismatch (II beg, II end, II cmpBeg) mismatch (II beg, II end, II cmpBeg, BinaPred op) | 返回 [beg, end) 和 [cmpBeg) 内第一对“两两相异”的元素 pair 返回 [beg, end) 和 [cmpBeg) 内第一对“造成 op 返回 false”的元素 pair | O(n) |
find_first_of (FI beg, FI end, FI searchBeg, FI searchEnd) find_first_of (FI beg, FI end, FI searchBeg, FI searchEnd, BinaPred op) | 返回第一个同时出现于 [beg, end) 和 [searchBeg, searchEnd) 的元素位置 返回第一个位于 [beg, end) 的元素其与 [searchBeg, searchEnd) 中每一个元素 op 都返回 true | O(n) |
search (FI beg, FI end, FI searchBeg, FI searchEnd) search (FI beg, FI end, FI searchBeg, FI searchEnd, BinaPred op) find_end (FI beg, FI end, FI searchBeg, FI searchEnd) find_end (FI beg, FI end, FI searchBeg, FI searchEnd, BinaPred op) | 返回 [beg, end) 内和 [searchBeg, searchEnd) 完全吻合的第一个子区间内第一个元素位置 返回 [beg, end) 内和 [searchBeg, searchEnd) 造成 op 返回 true 第一个子区间内第一个元素位置 返回 [beg, end) 内和 [searchBeg, searchEnd) 完全吻合的最后一个子区间内第一个元素位置 返回 [beg, end) 内和 [searchBeg, searchEnd) 造成 op 返回 true 最后一个子区间内第一个元素位置 | O(n) |
equal (II beg, II end, II cmpBeg) equal (II beg, II end, II cmpBeg, BinaPred op) | [beg, end) 内元素是否和以 cmpBeg 开头的区间内的元素相同(cmpBeg区间要足够) [beg, end) 内元素是否和以 cmpBeg 开头的区间内的对应元素使 op 返回 true(要求同上) | O(n) |
is_permutation (FI beg, FI end, FI beg2) is_permutation (FI beg, FI end, FI beg2, CompFunc op) | 顺序无所谓的情况下 [beg, end) 内元素是否和以 cmpBeg 开头的区间内的元素相同 顺序无所谓的情况下 [beg, end) 内元素是否和以 cmpBeg 开头的区间内的元素令 op 都返回 true | O(n^2) |
lexicographcal_compare (II beg, II end, II beg2, II beg2) lexicographcal_compare (II beg, II end, II beg2, II beg2, CompFunc op) | 判断 [beg, end) 内元素是否都小于 [beg2, end2) 内元素(不满足则立即返回 false,不继续比较) 判断 [beg, end) 和 [beg2, end2) 内元素是否都使 op 返回 true(同上) | O(n) |
is_sorted (FI beg, FI end, FI beg2) is_sorted (FI beg, FI end, FI beg2, CompFunc op) is_sorted_until (FI beg, FI end, FI beg2) is_sorted_until (FI beg, FI end, FI beg2, CompFunc op) | 判断 [beg, end) 内元素是否已按照 < 排序 判断 [beg, end) 内元素是否已按照 op 排序 返回 [beg, end) 内第一个破坏 < 排序的元素 返回 [beg, end) 内第一个破坏 op 排序的元素 | O(n) |
is_partitioned (II beg, II end, UnaryPredicate op) | 判断 [beg, end) 内元素是否满足“按 op 排序的在前,不按 op 排序的在后” | O(n) |
partition_point (FI beg, FI end, BinaPred op) | 返回 [beg, end) 内元素按照 op [有序, 无序) 排列,无序子区间的第一个元素 | RI,O(log n) 非RI,O(n) |
is_heap (RI beg, RI end) is_heap (RI beg, RI end, BinaPred op) is_heap_until (RI beg, RI end) is_heap_until (RI beg, RI end, BinaPred op) | 判断 [beg, end) 内元素是否形成一个 heap(使用 < 比较,意味着 beg 位置为最大元素之一) 判断 [beg, end) 内元素是否形成一个 heap(使用 op 比较) 返回 [beg, end) 内阻止元素形成一个 heap(使用 < 比较,该元素比 beg 还大)的元素位置 返回 [beg, end) 内阻止元素形成一个 heap(使用 op 比较)的元素位置 | O(n) |
all_of (II beg, II end, UnaryPredicate op) any_of (II beg, II end, UnaryPredicate op) nono_of (II beg, II end, UnaryPredicate op) | 判断 [beg, end) 内元素是否全部 / 或至少一个 / 或没有任何元素,使 op 返回 true | O(n) |