std::ranges::common_view<V>::begin
From cppreference.com
< cpp | ranges | common view
| constexpr auto begin() requires (!/*simple_view*/<V>); |
(1) | (C++20以降) |
| constexpr auto begin() const requires range<const V>; |
(2) | (C++20以降) |
1)
common_view の先頭要素へのイテレータを返します。具体的には、- ranges::begin(
base_)、もし ranges::random_access_range<V> と ranges::sized_range<V> の両方が満たされる場合、 - std::common_iterator<ranges::iterator_t<V>, ranges::sentinel_t<V>>(ranges::begin(
base_)) それ以外の場合。
2) (1) と同じですが、
V は const 修飾されています。目次 |
[編集] 戻り値
基になるビューの先頭へのイテレータ。
[編集] 例
このコードを実行
#include <iostream> #include <numeric> #include <ranges> #include <string_view> int main() { constexpr auto common = std::views::iota(1) | std::views::take(3) | std::views::common ; for (int i{}; int e : common) std::cout << (i++ ? " + " : "") << e; std::cout << " = " << std::accumulate(common.begin(), common.end(), 0) << '\n'; }
出力
1 + 2 + 3 = 6
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 4012 | C++20 | non-const オーバーロードで simple_view チェックが欠落していました | 追加された |
[編集] 関連項目
| 末尾へのイテレータを返す (public メンバ関数) | |
| (C++20) |
rangeの先頭を指すイテレータを返す (カスタマイゼーションポイントオブジェクト) |
| (C++20) |
rangeの終端を示す番兵を返す (カスタマイゼーションポイントオブジェクト) |