Daily bit(e) C++. std::ranges::contains, std::ranges::contains_subrange

Добавлено 24 сентября 2026 в 08:11

Daily bit(e) C++ 122, упрощенные алгоритмы в C++23 для проверки наличия – std::ranges::contains и std::ranges::contains_subrange.

Daily bit(e) C++

В стандарте C++23 в пространстве имен ranges появились два новых алгоритма.

  • std::ranges::contains
  • std::ranges::contains_subrange

Эти два алгоритма не привносят новой функциональности; вместо этого они избавляют от необходимости преобразовывать результаты работы std::ranges::find и std::ranges::search.

#include <algorithm>
#include <vector>

std::vector<int> data{1,2,3,4,5,6,7,8,9};

bool r1 = std::ranges::contains(data, 5);
// r1 == true
// То же самое, что и:
bool r2 = std::ranges::find(data, 5) != data.end();
// r2 == true

bool r3 = std::ranges::contains_subrange(data, auto({3,4,5}));
// r3 == true
// То же самое, что и:
bool r4 = not std::ranges::search(data, auto({3,4,5})).empty();
// r4 == true

Пример на Compiler Explorer

Теги

C++ / CppDaily bit(e) C++Программирование