最終更新日時(UTC): 2026年01月31日 04時25分25秒
Akira Takahashi が更新

履歴 編集

function template
<iterator>

# std::cend(C++14)

    namespace std {
      template <class C>
      constexpr auto cend(const C& c)
        noexcept(noexcept(std::end(c)))
        -> decltype(std::end(c));
    }

## 概要

範囲から、最後尾要素の次を指す読み取り専用イテレータを取得する。

## 戻り値

    return std::end(c);

パラメータを`const`で受け取っているので、`std::end()`を経由することで、読み取り専用イテレータを取得している。

## 例

    #include <iostream>
    #include <vector>
    #include <iterator>
    #include <algorithm> // for_each

    int main()
    {
      std::vector<int> v = {1, 2, 3};

      decltype(v)::const_iterator first = std::cbegin(v);
      decltype(v)::const_iterator last = std::cend(v);

      std::for_each(first, last, [](const int& x) {
        std::cout << x << std::endl;
      });
    }

### 出力

    1
    2
    3

## バージョン

### 言語

- C++14

### 処理系

- Clang: 3.4 ✅
- GCC: 5.0 ✅
- ICC: ??
- Visual C++: ??

## 参照

- LWG Issue 2128. Absence of global functions `cbegin`/`cend`
- P3016R6 Resolve inconsistencies in `begin`/`end` for `valarray` and `braced-initializer-list`