Namespaces
Variants

nothrow-input-iterator, nothrow-forward-iterator, nothrow-bidirectional-iterator, no-throw-input-range, nothrow-random-access-iterator

От ru.cppreference.net
 
 
Библиотека алгоритмов
Ограниченные алгоритмы и алгоритмы над диапазонами (C++20)
Ограниченные алгоритмы, например ranges::copy, ranges::sort, ...
Немодифицирующие операции с последовательностями    
Пакетные операции
(C++17)
Операции поиска
Модифицирующие операции с последовательностями
Операции копирования
(C++11)
(C++11)
Операции обмена
Операции преобразования
Операции генерации
Операции удаления
Операции изменения порядка
(until C++17)(C++11)
(C++20)(C++20)
Операции выборки
(C++17)

Операции сортировки и связанные операции
Операции разделения
(C++11)    

Операции сортировки
Операции бинарного поиска
(on partitioned ranges)
Операции над множествами (на отсортированных диапазонах)
Операции слияния (на отсортированных диапазонах)
Операции с кучей
Операции минимума/максимума
(C++11)
(C++17)
Операции лексикографического сравнения
Операции перестановок


Политики выполнения (C++17)
(только для описания*)(C++26)

Численные операции
(C++11)
(C++17)
(C++17)    

Специализированные <memory> алгоритмы

Специализированные <random> алгоритмы
Библиотека C









 
Специализированные <memory> алгоритмы
 
template< class I >
concept /*nothrow-input-iterator*/ =
    std::input_iterator<I> &&
    std::is_lvalue_reference_v<std::iter_reference_t<I>> &&
    std::same_as<std::remove_cvref_t<std::iter_reference_t<I>>,
                 std::iter_value_t<I>>;
(1) (только для описания*)
template< class I >
concept /*nothrow-forward-iterator*/ =
    /*nothrow-input-iterator*/<I> &&
    std::forward_iterator<I> &&
    /*nothrow-sentinel-for*/<I, I>;
(2) (только для описания*)
template< class I >
concept /*nothrow-bidirectional-iterator*/ =
    /*nothrow-forward-iterator*/<I> &&
    std::bidirectional_iterator<I>;
(3) (since C++26)
(только для описания*)
template< class I >
concept /*nothrow-random-access-iterator*/ =
    /*nothrow-bidirectional-iterator*/<I> &&
    std::random_access_iterator<I> &&
    /*nothrow-sized-sentinel-for*/<I, I>;
(4) (since C++26)
(только для описания*)

Эти концепты, представленные только для описания, указывают, что никакие исключения не выбрасываются из операций, требуемых специализированными алгоритмами памяти<memory> на итераторах.

Для определений /*nothrow-sentinel-for*/ и /*nothrow-sized-sentinel-for*/ см. эту страницу.

Семантические требования

1) Тип I удовлетворяет nothrow-input-iterator только если никакие исключения не выбрасываются при инкременте, копирующем конструировании, перемещающем конструировании, копирующем присваивании, перемещающем присваивании или разыменовании через допустимые итераторы типа I.
3) Тип I удовлетворяет nothrow-bidirectional-iterator только если никакие исключения не выбрасываются при декременте допустимых итераторов типа I.
4) Тип I удовлетворяет nothrow-random-access-iterator только если никакие исключения не выбрасываются при сравнениях допустимых итераторов типа I или операциях -, +, -=, +=, [] над допустимыми значениями типов I и std::iter_difference_t<I>.

Примечания

Эти концепты допускают, что некоторые операции над итераторами могут выбрасывать исключения.

См. также

указывает, что тип является входным итератором, то есть его значения по ссылке могут быть прочитаны, и он может быть как пре- так и постинкрементирован
(концепт)
указывает, что input_iterator является прямым итератором, поддерживающим сравнение на равенство и многопроходность
(концепт)
указывает, что forward_iterator является двунаправленным итератором, поддерживающим перемещение назад
(концепт)
указывает, что bidirectional_iterator является итератором произвольного доступа, поддерживающим продвижение за постоянное время и индексирование
(концепт)