header:
- name: ['Name', ['rowname']]
- Inp: ['Input ranges*', ['Inp']]
- Acc: ['Accumulator', ['Acc']]
- Ret: ['Returns⌖', ['Ret']]
- Ops: ['Operations†', ['Ops']]
- Def: ['Default operations', ['Def']]
- Cpx: ['Complexity', ['Cpx']]
- Dir: ['Order‡', ['Dir']]
- Cmp: ['Compare to', ['Cmp']]
- Family: ['Family', ['Family', 'hidden']]
data:
- name: '{std:inner_@product}'
id: 'std:inner_product'
Inp: '2{^↓I|FN:raccess}'
Acc: 'Arg'
Ret: 'Value'
Ops: 'A, bT'
Def: '{std:plus}, {std:multiplies}'
Cpx: 'Unspc.'
Dir: 'Fwd.'
Cmp: '{#std:transform_@reduce}'
Family: '10'
- name: '{CH:adjacent_@reduce}{▸|YT:sEvYmb3eKsw?t=}'
id: 'CH:adjacent_reduce'
Inp: '1s{^↓F|FN:raccess}'
Acc: 'Arg'
Ret: 'Value'
Ops: 'A, bT'
Def: ''
Cpx: 'Unspc.'
Dir: 'Fwd.'
Cmp: '{#std:inner_@product}'
Family: '10'
- name: '{std:transform_@reduce}'
id: 'std:transform_reduce'
Inp: '1{^↓I,∥F|FN:raccess} / 2{^↓I,∥F|FN:raccess}'
Acc: 'Arg'
Ret: 'Value'
Ops: 'acR, uT / bT'
Def: '{std:plus}, {std:multiplies}'
Cpx: 'O(N)'
Dir: '{∥|FN:par}'
Cmp: ''
Family: '20'
- name: '{std:find}'
id: 'std:find'
Inp: '1{^↓I,∥F|FN:raccess}+Value'
Acc: ''
Ret: 'Position'
Ops: ''
Def: '{std:equal_to}'
Cpx: 'O(N)'
Dir: 'S/C, {∥|FN:par}'
Cmp: ''
Family: '70'
- name: '{std:find_if}, {std:find_@if_not}'
id: 'std:find_if'
Inp: '1{^↓I,∥F|FN:raccess}'
Acc: ''
Ret: 'Position'
Ops: 'uP'
Def: ''
Cpx: 'O(N)'
Dir: 'S/C, {∥|FN:par}'
Cmp: ''
Family: '70'
- name: '{std:find_@first_of}'
id: 'std:find_first_of'
Inp: '1{^↓I,∥F|FN:raccess} + 1{^↓F|FN:raccess}'
Acc: ''
Ret: 'Position'
Ops: 'bP'
Def: '{std:equal_to}'
Cpx: 'O(S×N)'
Dir: 'S/C, {∥|FN:par}'
Cmp: '{#std:find_if}'
Family: '70'
- name: '{std:min_@element}, {std:max_@element}'
id: 'std:min_element'
Inp: '1{^↓F|FN:raccess}'
Acc: 'First'
Ret: 'Position'
Ops: 'bP'
Def: '{std:less}'
Cpx: 'O(N), =(max(N-1, 0))'
Dir: 'Fwd., {∥|FN:par}'
Cmp: ''
Family: '72'
- name: '{std:minmax_@element}'
id: 'std:minmax_element'
Inp: '1{^↓F|FN:raccess}'
Acc: 'First'
Ret: '2 Positions{^⌖|FN:position}'
Ops: 'bP'
Def: '{std:less}'
Cpx: 'O(N), ≤(max(floor((3/2)*(N−1)), 0))'
Dir: 'Fwd., {∥|FN:par}'
Cmp: ''
Family: '72'
- name: '{std:lower_@bound}, {std:upper_@bound}'
id: 'std:lower_bound'
Inp: '1{^↓F|FN:raccess}+Value'
Acc: ''
Ret: 'Position'
Ops: 'bP'
Def: '{std:less}'
Cpx: 'O(log N) + O(1){^↓R|FN:raccess}; O(N)'
Dir: 'B/S'
Cmp: ''
Family: '75'
- name: '{std:equal_@range}'
id: 'std:equal_range'
Inp: '1{^↓F|FN:raccess}+Value'
Acc: ''
Ret: 'Range{^⌖|FN:position}'
Ops: 'bP'
Def: '{std:less}'
Cpx: 'O(log N) + O(1){^↓R|FN:raccess}; O(N)'
Dir: 'B/S'
Cmp: ''
Family: '75'
- name: '{std:search}'
id: 'std:search'
Inp: '2{^↓F|FN:raccess}'
Acc: ''
Ret: 'Position'
Ops: 'bP'
Def: '{std:equal_to}'
Cpx: '≤(S×N)'
Dir: '{∥|FN:par}'
Cmp: ''
Family: '80'
- name: '{std:find_end}'
id: 'std:find_end'
Inp: '2{^↓F|FN:raccess}'
Acc: ''
Ret: 'Position'
Ops: 'bP'
Def: '{std:equal_to}'
Cpx: '≤(S×(N-S+1))'
Dir: '{∥|FN:par}'
Cmp: '{#std:search}'
Family: '80'
- name: '{kblib:starts_@with}'
id: 'kblib:starts_with'
Inp: '2{^↓F|FN:raccess}'
Acc: ''
Ret: '{:bool}'
Ops: 'bP'
Def: '{std:equal_to}'
Cpx: 'N > S ? O(S) : O(1){^↓R|FN:raccess}; O(min(S, N)){^↓F|FN:raccess}'
Dir: 'Fwd.'
Cmp: ''
Family: '80'
- name: '{kblib:ends_@with}'
id: 'kblib:ends_with'
Inp: '2{^↓B|FN:raccess}'
Acc: ''
Ret: '{:bool}'
Ops: 'bP'
Def: '{std:equal_to}'
Cpx: 'N > S ? O(S) : O(1){^↓R|FN:raccess}; O(min(S, N)){^↓B|FN:raccess}'
Dir: ''
Cmp: ''
Family: '80'
- name: '{std:ranges::starts_@with}'
id: 'std:ranges::starts_with'
Inp: '2{^↓I|FN:raccess}'
Acc: ''
Ret: '{:bool}'
Ops: 'bP, uT, uT{^Δ|FN:3way}'
Def: '{std:equal_to}, {std:identity}, {std:identity}'
Cpx: '≤(min(S, N))'
Dir: ''
Cmp: ''
Family: '80'
- name: '{std:ranges::ends_@with}'
id: 'std:ranges::ends_with'
Inp: '2{^↓F|FN:raccess}'
Acc: ''
Ret: '{:bool}'
Ops: 'bP, uT, uT{^Δ|FN:3way}'
Def: '{std:equal_to}, {std:identity}, {std:identity}'
Cpx: '≤(min(S, N))'
Dir: ''
Cmp: ''
Family: '80'
- name: '{%search (C++17)|std:search}'
id: 'std:search.17'
Inp: '1{^↓F|FN:raccess}'
Acc: ''
Ret: 'Position'
Ops: 'Searcher'
Def: ''
Cpx: 'Depends on Searcher'
Dir: ''
Cmp: ''
Family: '85'
- name: '{kblib:find_@match}'
id: 'kblib:find_match'
Inp: '2{^↓I|FN:raccess}'
Acc: ''
Ret: 'Position{^⌖|FN:position}'
Ops: 'bP'
Def: '{std:equal_to}'
Cpx: 'O(N), O(min(N, M))'
Dir: 'S/C'
Cmp: ''
Family: '90'
- name: '{std:mismatch}'
id: 'std:mismatch'
Inp: '2{^↓I,∥F|FN:raccess}'
Acc: ''
Ret: 'Position{^⌖|FN:position}'
Ops: 'bP'
Def: '{std:equal_to}'
Cpx: 'O(N), O(min(N, M))'
Dir: 'S/C, {∥|FN:par}'
Cmp: '{#kblib:find_match}'
Family: '90'
- name: '{std:adjacent_@find}'
id: 'std:adjacent_find'
Inp: '1s{^↓F|FN:raccess}'
Acc: ''
Ret: 'Position'
Ops: 'bP'
Def: '{std:equal_to}'
Cpx: '=(min((result-first)+1, (last-first)-1)); O(N){^↓∥|FN:raccess}'
Dir: 'S/C, {∥|FN:par}'
Cmp: '{#kblib:find_match}'
Family: '90'
- name: '{std:is_sorted_@until}'
id: 'std:is_sorted_until'
Inp: '1s{^↓F|FN:raccess}'
Acc: ''
Ret: 'Position'
Ops: 'bP'
Def: '{std:less}'
Cpx: 'O(N)'
Dir: 'S/C, {∥|FN:par}'
Cmp: '{#kblib:find_match}'
Family: '90'
- name: '{std:search_n}'
id: 'std:search_n'
Inp: '1{^↓F|FN:raccess} + Count + Value'
Acc: ''
Ret: 'Position'
Ops: 'bP'
Def: '{std:equal_to}'
Cpx: '≤(N)'
Dir: '{∥|FN:par}'
Cmp: '{#std:adjacent_@find}'
Family: '95'
- name: '{std:accumulate}'
id: 'std:accumulate'
Inp: '1{^↓I|FN:raccess}'
Acc: 'Arg'
Ret: 'Value'
Ops: 'A'
Def: '{std:plus}'
Cpx: 'Unspc.; O(N)'
Dir: 'Fwd.'
Cmp: ''
Family: '110'
- name: '{kblib:sum}'
id: 'kblib:sum'
Inp: '1{^↓I|FN:raccess}'
Acc: 'First'
Ret: 'Value'
Ops: 'R'
Def: '{std:plus}'
Cpx: 'O(N)'
Dir: 'Fwd.'
Cmp: '{#std:accumulate}'
Family: '110'
- name: '{std:reduce}'
id: 'std:reduce'
Inp: '1{^↓I,∥F|FN:raccess}'
Acc: 'Arg'
Ret: 'Value'
Ops: 'acR'
Def: '{std:plus}'
Cpx: 'O(N)'
Dir: '{∥|FN:par}'
Cmp: ''
Family: '110'
- name: '{std:count}'
id: 'std:count'
Inp: '1{^↓I,∥F|FN:raccess}+Value'
Acc: '{:0}'
Ret: '{std:size_t}'
Ops: ''
Def: '{std:equal_to}'
Cpx: '=(N)'
Dir: 'Fwd., {∥|FN:par}'
Cmp: '{#std:accumulate}'
Family: '110'
- name: '{std:count_if}'
id: 'std:count_if'
Inp: '1{^↓I,∥F|FN:raccess}'
Acc: '{:0}'
Ret: '{std:size_t}'
Ops: 'uP'
Def: ''
Cpx: '=(N)'
Dir: 'Fwd., {∥|FN:par}'
Cmp: '{#std:accumulate}'
Family: '110'
- name: '{std:binary_@search}'
id: 'std:binary_search'
Inp: '1{^↓F|FN:raccess}+Value'
Acc: ''
Ret: '{:bool}'
Ops: 'bP'
Def: '{std:less}'
Cpx: 'O(log N) + O(1){^↓R|FN:raccess}; O(N)'
Dir: 'B/S'
Cmp: ''
Family: '110'
- name: '{std:is_partitioned}'
id: 'std:is_partitioned'
Inp: '1{^↓I,∥F|FN:raccess}'
Acc: ''
Ret: '{:bool}'
Ops: 'uP'
Def: ''
Cpx: 'O(N)'
Dir: 'Fwd., {∥|FN:par}'
Cmp: ''
Family: '120'
- name: '{std:is_sorted}'
id: 'std:is_sorted'
Inp: '1{^↓F|FN:raccess}'
Acc: ''
Ret: '{:bool}'
Ops: 'bP'
Def: '{std:less}'
Cpx: 'O(N)'
Dir: 'Fwd., {∥|FN:par}'
Cmp: ''
Family: '120'
- name: '{std:is_heap}'
id: 'std:is_heap'
Inp: '1{^↓R|FN:raccess}'
Acc: ''
Ret: '{:bool}'
Ops: 'bP'
Def: '{std:less}'
Cpx: 'O(N)'
Dir: '{∥|FN:par}'
Cmp: ''
Family: '120'
- name: '{std:is_permutation}'
id: 'std:is_permutation'
Inp: '2{^↓F|FN:raccess}'
Acc: ''
Ret: '{:bool}'
Ops: 'bP'
Def: '{std:equal_to}'
Cpx: 'N==M ? O(N2) : O(1){^↓R|FN:raccess}; O(N2)'
Dir: ''
Cmp: ''
Family: '120'
- name: '{std:includes}'
id: 'std:includes'
Inp: '2{^↓I,∥F|FN:raccess}'
Acc: ''
Ret: '{:bool}'
Ops: 'bP'
Def: '{std:less}'
Cpx: 'O(N+M), ≤(2×(N+M-1))'
Dir: 'Fwd., {∥|FN:par}'
Cmp: ''
Family: '120'
- name: '{kblib:first_result}'
id: 'kblib:first_result'
Inp: '1{^↓I|FN:raccess}+Value / 2{^↓I|FN:raccess}+Value'
Acc: 'Arg'
Ret: 'Value'
Ops: 'uT / bT'
Def: ''
Cpx: 'O(N)'
Dir: 'S/C'
Cmp: ''
Family: '125'
- name: '{kblib:first_@result_if}'
id: 'kblib:first_result_if'
Inp: '1{^↓I|FN:raccess} / 2{^↓I|FN:raccess}'
Acc: ''
Ret: 'Value'
Ops: 'uT / bT, uP / bP'
Def: ''
Cpx: 'O(N)'
Dir: 'S/C'
Cmp: ''
Family: '125'
- name: '{std:all_of}, {std:none_of}'
id: 'std:all_of'
Inp: '1{^↓I,∥F|FN:raccess}'
Acc: '{:true}'
Ret: '{:bool}'
Ops: 'uP'
Def: ''
Cpx: 'O(N)'
Dir: 'S/C, {∥|FN:par}'
Cmp: '{#kblib:first_result}'
Family: '125'
- name: '{std:any_of}'
id: 'std:any_of'
Inp: '1{^↓I,∥F|FN:raccess}'
Acc: '{:false}'
Ret: '{:bool}'
Ops: 'uP'
Def: ''
Cpx: 'O(N)'
Dir: 'S/C, {∥|FN:par}'
Cmp: '{#kblib:first_result}'
Family: '125'
- name: '{kblib:contains}'
id: 'kblib:contains'
Inp: '1{^↓I|FN:raccess}+Value'
Acc: '{:false}'
Ret: '{:bool}'
Ops: ''
Def: '{std:equal_to}'
Cpx: 'O(N)'
Dir: 'S/C'
Cmp: '{#kblib:first_result}'
Family: '125'
- name: '{kblib:contains_@any}'
id: 'kblib:contains_any'
Inp: '2{^↓I|FN:raccess}'
Acc: '{:false}'
Ret: '{:bool}'
Ops: ''
Def: '{kblib:contains}'
Cpx: 'O(S×N)'
Dir: 'S/C'
Cmp: '{#kblib:first_result}'
Family: '125'
- name: '{std:equal}'
id: 'std:equal'
Inp: '2{^↓I,∥F|FN:raccess}'
Acc: ''
Ret: '{:bool}'
Ops: 'bP'
Def: '{std:equal_to}'
Cpx: 'N==M ? ≤(N) : O(1){^↓R|FN:raccess}; ≤(N); O(N){^↓∥|FN:raccess}'
Dir: 'Fwd., {∥|FN:par}'
Cmp: '{#kblib:first_result}'
Family: '125'
- name: '{std:lexicographical_@compare}'
id: 'std:lexicographical_compare'
Inp: '2{^↓I,∥F|FN:raccess}'
Acc: ''
Ret: '{:bool}'
Ops: 'bP'
Def: '{std:less}'
Cpx: '≤(2×min(N, M))'
Dir: 'Fwd., {∥|FN:par}'
Cmp: '{#kblib:first_result}'
Family: '125'
- name: '{std:lexicographical_@compare_@three_way}'
id: 'std:lexicographical_compare_three_way'
Inp: '2{^↓I|FN:raccess}'
Acc: ''
Ret: 'ordering'
Ops: 'Compare{^Δ|FN:3way}'
Def: '{std:compare_@three_way}'
Cpx: '<(min(N, M))'
Dir: 'Fwd.'
Cmp: '{#kblib:first_result}'
Family: '125'
- name: '{std:partition_@point}'
id: 'std:partition_point'
Inp: '1{^↓F|FN:raccess}'
Acc: ''
Ret: 'Position'
Ops: 'uP'
Def: ''
Cpx: 'O(log N){^↓R|FN:raccess}; O(N)'
Dir: 'B/S'
Cmp: ''
Family: '130'
- name: '{std:is_heap_@until}'
id: 'std:is_heap_until'
Inp: '1{^↓R|FN:raccess}'
Acc: ''
Ret: 'Position'
Ops: 'bP'
Def: '{std:less}'
Cpx: 'O(N)'
Dir: '{∥|FN:par}'
Cmp: ''
Family: '130'