std::valarray<T>::end
来自cppreference.com
| |
(1) | (C++11 起) |
| |
(2) | (C++11 起) |
返回指代数值数组中末元素后一位置的迭代器。
在 v 上调用成员函数 resize(),或在 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++ 标准。
| 缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
|---|---|---|---|
| LWG 2058 | C++11 | 1. end() 需要支持替换类型2. 未指定返回的迭代器会在什么时候失效 |
1. 不需要 2. 已指定 |
| P3016R6 | C++11 | 非成员 end() 函数在范围访问中引入了不一致
|
更改 end() 为成员函数
|
参阅
(C++11) |
获取 valarray 的起始迭代器 (公开成员函数) |