earch") (C++20)  |  determines if an element exists in a partially-ordered range   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_binary_search&action=edit)  
[ ranges::equal_range  ](/w/cpp/algorithm/ranges/equal_range "cpp/algorithm/ranges/equal range") (C++20)  |  returns range of elements matching a specific key   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_equal_range&action=edit)  
  
#####  Set operations (on sorted ranges)  
  
[ ranges::merge  ](/w/cpp/algorithm/ranges/merge "cpp/algorithm/ranges/merge") (C++20)  |  merges two sorted ranges   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_merge&action=edit)  
[ ranges::inplace_merge  ](/w/cpp/algorithm/ranges/inplace_merge "cpp/algorithm/ranges/inplace merge") (C++20)  |  merges two ordered ranges in-place   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_inplace_merge&action=edit)  
[ ranges::includes  ](/w/cpp/algorithm/ranges/includes "cpp/algorithm/ranges/includes") (C++20)  |  returns  true  if one sequence is a subsequence of another   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_includes&action=edit)  
[ ranges::set_difference  ](/w/cpp/algorithm/ranges/set_difference "cpp/algorithm/ranges/set difference") (C++20)  |  computes the difference between two sets   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_set_difference&action=edit)  
[ ranges::set_intersection  ](/w/cpp/algorithm/ranges/set_intersection "cpp/algorithm/ranges/set intersection") (C++20)  |  computes the intersection of two sets   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_set_intersection&action=edit)  
[ ranges::set_symmetric_difference  ](/w/cpp/algorithm/ranges/set_symmetric_difference "cpp/algorithm/ranges/set symmetric difference") (C++20)  |  computes the symmetric difference between two sets   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_set_symmetric_difference&action=edit)  
[ ranges::set_union  ](/w/cpp/algorithm/ranges/set_union "cpp/algorithm/ranges/set union") (C++20)  |  computes the union of two sets   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_set_union&action=edit)  
  
#####  Heap operations  
  
[ ranges::is_heap  ](/w/cpp/algorithm/ranges/is_heap "cpp/algorithm/ranges/is heap") (C++20)  |  checks if the given range is a max heap   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_is_heap&action=edit)  
[ ranges::is_heap_until  ](/w/cpp/algorithm/ranges/is_heap_until "cpp/algorithm/ranges/is heap until") (C++20)  |  finds the largest subrange that is a max heap   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_is_heap_until&action=edit)  
[ ranges::make_heap  ](/w/cpp/algorithm/ranges/make_heap "cpp/algorithm/ranges/make heap") (C++20)  |  creates a max heap out of a range of elements   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_make_heap&action=edit)  
[ ranges::push_heap  ](/w/cpp/algorithm/ranges/push_heap "cpp/algorithm/ranges/push heap") (C++20)  |  adds an element to a max heap   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/algorithm/ranges/dsc_push_heap&action=edit)  
[ ranges::pop_heap  ](/w/cpp/algorithm/ranges/pop_heap "cpp/algorithm/ranges/pop heap") (C++20)  |  removes the largest element from a max heap   
(niebloid)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp