operator- (ranges::zip_view:: sentinel )
|
||||||||||||||||||||||
| Range primitives | |||||||
|
|||||||
| Range concepts | |||||||||||||||||||
|
|||||||||||||||||||
| Range factories | |||||||||
|
|||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||
| Helper items | |||||||||||||||||
|
|
||||||||||||||||
| Member functions | ||||
| Deduction guides | ||||
| Iterator | ||||
| Member functions | ||||
| Non-member functions | ||||
| Sentinel | ||||
| Member functions | ||||
| Non-member functions | ||||
|
operator-
(zip_view::
iterator
,zip_view::
sentinel
)
|
|
template
<
bool
OtherConst
>
requires
(
std::
sized_sentinel_for
<
|
(1) | (начиная с C++23) |
|
template
<
bool
OtherConst
>
requires
(
std::
sized_sentinel_for
<
|
(2) | (начиная с C++23) |
Вычисляет минимальное расстояние между базовым кортежем итераторов x и базовым кортежем стражей y .
Эти функции не видны при обычном
неквалифицированном
или
квалифицированном поиске
и могут быть найдены только с помощью
поиска, зависимого от аргументов
, когда
zip_view::
sentinel
<Const>
является ассоциированным классом аргументов.
Параметры
| x | - | итератор |
| y | - | страж |
Возвращаемое значение
Пусть
current_
обозначает базовый кортеж итераторов
x
, а
end_
обозначает базовый кортеж ограничителей
y
.
Пусть
DIST
(x, y, i)
будет расстоянием, вычисленным выражением, эквивалентным
std
::
get
<
i
>
(
x.
current_
)
-
std
::
get
<
i
>
(
y.
end_
)
для некоторого целого числа
i
.
DIST
(x, y, i)
для всех
i
в диапазоне
0 ≤ i < sizeof...(Views)
Пример
#include <cassert> #include <deque> #include <list> #include <ranges> #include <vector> int main() { auto x = std::vector{1, 2, 3, 4}; auto y = std::deque{'a', 'b', 'c'}; auto z = {1.1, 2.2}; auto w = std::list{1, 2, 3}; auto p = std::views::zip(x, y, z); assert(p.begin() - p.end() == +2); assert(p.end() - p.begin() == -2); [[maybe_unused]] auto q = std::views::zip(x, y, w); // Следующий код вызывает ошибку компиляции, потому что std::list::iterator // не поддерживает operator-, который необходим для вычисления расстояния: // auto e = q.begin() - q.end(); }