Skip to content

[EPIC] Add missing Thrust algorithms #5160

@bernhardmgruber

Description

@bernhardmgruber

Thrust currenty misses implementations for the following algorithms operating on ranges of elements. Based on C++23.

From the <algorithm> header:

  • find_end(I, I, I, I)
  • find_end(I, I, I, I, P)
  • find_first_of(I, I, I, I)
  • find_first_of(I, I, I, I, P)
  • adjacent_find(I, I)
  • adjacent_find(I, I, P)
  • mismatch(I, I, I, I)
  • mismatch(I, I, I, I, P)
  • equal(I, I, I, I)
  • equal(I, I, I, I, P)
  • search
  • search_n(I, I, C, V)
  • search_n(I, I, C, V, P)
  • move(I, I, I)
  • rotate
  • rotate_copy
  • shift_left
  • shift_right
  • partial_sort(I, I, I)
  • partial_sort(I, I, I, P)
  • partial_sort_copy(I, I, I, I)
  • partial_sort_copy(I, I, I, I, P)
  • nth_element(I, I, I)
  • nth_element(I, I, I, P)
  • inplace_merge(I, I, I)
  • inplace_merge(I, I, I, P)
  • includes(I, I, I, I)
  • includes(I, I, I, I, P)
  • is_heap(I, I)
  • is_heap(I, I, P)
  • is_heap_until(I, I)
  • is_heap_until(I, I, P)
  • lexicographical_compare(I, I, I, I)
  • lexicographical_compare(I, I, I, I, P)

From the <numeric> header:

  • transform_reduce(I, I, I, T)
  • transform_reduce(I, I, I, T, B, B)
  • transform_exclusive_scan(I, I, I, T, B, U)

From the <memory> header:

  • uninitialized_default_construct
  • uninitialized_default_construct_n
  • uninitialized_value_construct
  • uninitialized_value_construct_n
  • uninitialized_move
  • uninitialized_move_n
  • destroy
  • destroy_n

Algorithms without an execution policy in the standard:

  • lexicographical_compare_three_way
  • accumulate
  • copy_backward
  • is_permutation
  • next_permutation
  • prev_permutation
  • move_backward
  • partition_point
  • pop_heap
  • push_heap
  • sort_heap
  • sample
  • make_heap

Related issues: #680, #685

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedRequest for input or help from the community

    Type

    No type

    Projects

    Status

    In Review

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions