std::ranges::take_view<V>:: end
|
constexpr
auto
end
(
)
requires
(
!
/*simple-view*/
<
V
>
)
;
|
(1) | (C++20以降) |
|
constexpr
auto
end
(
)
const
requires
ranges::
range
<
const
V
>
;
|
(2) | (C++20以降) |
take_view
の終端を表すセンチネルまたはイテレータを返します。
take_view
の終端は、基になる範囲の
count
番目
の要素の次、
または基になる範囲の要素数が
count
未満の場合の基になる範囲の終端のいずれかです。
オーバーロード
(1)
は、
V
が
simple view
である場合(つまり、
V
と
const V
が同じイテレータ型とセンチネル型を持つビューである場合)、オーバーロード解決に参加しません。
目次 |
パラメータ
(なし)
戻り値
結果は、可能性としてconst修飾された基盤となるビュー型
Base
が満たすコンセプトに依存します。すなわち、
(
1
)
の場合は
V
、
(
2
)
の場合は
const V
です。
base_
を基となるビューとする。
|
基となるビュー型が
次を満たす場合... |
random_access_range
|
||
|---|---|---|---|
| はい | いいえ | ||
sized_range
|
はい |
ranges::
begin
(
base_
)
+
ranges:: range_difference_t < Base_ > ( this - > size ( ) ) |
std:: default_sentinel |
| いいえ |
1)
/*sentinel*/
<
false
>
{
ranges::
end
(
base_
)
}
2)
/*sentinel*/
<
true
>
{
ranges::
end
(
base_
)
}
|
||
例
#include <iostream> #include <iterator> #include <list> #include <ranges> #include <type_traits> namespace ranges = std::ranges; namespace views = std::views; int main() { const auto list1 = {3, 1, 4, 1, 5}; const auto seq1{list1 | views::take(4)}; static_assert(ranges::sized_range<decltype(seq1)> and ranges::random_access_range<decltype(seq1)> and std::is_same_v<decltype(seq1.end()), decltype(list1.end())>); for (auto it = seq1.begin(); it != seq1.end(); ++it) std::cout << *it << ' '; std::cout << '\n'; std::list list2{2, 7, 1, 8, 2}; const auto seq2{list2 | views::take(4)}; static_assert(ranges::sized_range<decltype(seq2)> and not ranges::random_access_range<decltype(seq2)> and std::is_same_v<decltype(seq2.end()), std::default_sentinel_t>); for (auto it = seq2.begin(); it != std::default_sentinel; ++it) std::cout << *it << ' '; std::cout << '\n'; }
出力:
3 1 4 1 2 7 1 8
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| P2393R1 | C++20 | signedとunsignedのinteger-class型間の暗黙変換が失敗する可能性がある | 明示的に変更 |
関連項目
|
先頭を指すイテレータを返す
(公開メンバ関数) |
|
|
(C++20)
|
範囲の終端までの距離を追跡するイテレータアダプタ
(クラステンプレート) |
|
(C++20)
|
take_view::begin
から返されたイテレータとセンチネルを比較する
(関数) |