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 の先頭イテレータを取得する (公開メンバ関数) |