Namespaces
Variants

std::valarray<T>::end

ja.cppreference.net より
 
 
 
 
iterator       end();
(1) (C++11 以上)
const_iterator end() const;
(2) (C++11 以上)

数値配列の最後の要素の次を指すイテレータを返します。

この関数から返されたイテレータは、resize() メンバ関数が v に対して呼び出された場合、または v の寿命が尽きた場合の、いずれか早い方で無効になります。

引数

v - 数値配列

戻り値

数値配列内の最後の要素の次を指すイテレータ。

例外

実装定義の例外を投げる可能性があります。

注記

std::valarray 引数を取る他の関数とは異なり、end() は、valarray を含む式から返される可能性がある置換型 (式テンプレートによって生成される型など) を受け入れることはできません: (v1 + v2).end() は移植性がなく、代わりに std::valarray<T>(v1 + v2).end() を使用する必要があります。

この関数の意図は、範囲 for ループ を valarray で動作させることであり、コンテナのセマンティクスを提供することではありません。

例

#include <algorithm>
#include <iostream>
#include <valarray>

int main()
{
    const std::valarray<char> va
    {
        'H', 'e', 'l', 'l', 'o', 
        ',', ' ', 
        'C', '+', '+', '!', '\n'
    };

    std::for_each(va.begin(), va.end(), [](char c){ std::cout << c; });
}

出力:

Hello, C++!

欠陥報告

以下の動作変更欠陥報告は、以前に公開された C++ 標準に遡って適用されました。

DR 適用先 公開時の動作 正しい動作
LWG 2058 C++11 1. end() は置換型をサポートする必要があった
2. 返されたイテレータがいつ無効になるかは未規定だった
1. 不要になった
2. 規定された
P3016R6 C++11 非メンバ end() 関数が範囲アクセスに非一貫性をもたらした end() がメンバ関数に変更された

関連項目

(C++11)
valarray
の先頭イテレータを取得する (公開メンバ関数)