std:: end (std::valarray)
| 
           
            
             template
            
            
             <
            
            
             class
            
            T
            
             >
            
             /* 见下文 */ end ( valarray < T > & v ) ; | (1) | (自 C++11 起) | 
| 
           
            
             template
            
            
             <
            
            
             class
            
            T
            
             >
            
             /* 见下文 */ end ( const valarray < T > & v ) ; | (2) | (自 C++11 起) | 
       针对
       
        valarray
       
       的
       
        
         std::end
        
       
       重载版本返回一个未指定类型的迭代器,该迭代器指向数值数组中最后一个元素之后的位置。
      
- 满足 mutable LegacyRandomAccessIterator 的要求,
| 
 | (since C++20) | 
- 
         具有成员类型
         value_type,其类型为T,且
- 
         具有成员类型
         reference,其类型为T&。
- 满足 常量 LegacyRandomAccessIterator 的要求,
| 
 | (C++20 起) | 
- 
         具有成员类型
         value_type,即T,且
- 
         具有成员类型
         reference,即const T&。
       从此函数返回的迭代器将在以下两种情况中首先发生时失效:对
       
        
         v
        
       
       调用成员函数
       
        
         resize()
        
       
       ,或
       
        
         v
        
       
       的生命周期结束。
      
| 目录 | 
参数
| v | - | 数值数组 | 
返回值
指向数值数组中最后一个元素之后的位置的迭代器。
异常
可能抛出实现定义的异常。
注释
       与其他接受
       
        std::valarray
       
       参数的函数不同,
       
        end()
       
       无法接受由涉及 valarray 的表达式可能返回的替换类型(例如表达式模板生成的类型):
       
        
         
          
           std::
           
            end
           
          
         
         
          (
         
         v1
         
          +
         
         v2
         
          )
         
        
       
       不具备可移植性,必须改用
       
        
         
          
           std::
           
            end
           
          
         
         
          (
         
         
          
           std::
           
            valarray
           
          
         
         
          <
         
         T
         
          >
         
         
          (
         
         v1
         
          +
         
         v2
         
          )
         
         
          )
         
        
       
       。
      
此函数的意图是让 范围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(std::begin(va), std::end(va), [](char c){ std::cout << c; }); }
输出:
Hello, C++!
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用范围 | 发布时行为 | 正确行为 | 
|---|---|---|---|
| LWG 2058 | C++11 | 1. 
          end()
         被要求支持替换类型2. 未说明返回的迭代器何时失效 | 1. 不再要求 2. 已明确说明 | 
参见
| 
           
            
             
              (C++11)
             
            
           
           | 重载
         
          
           std::begin (函数模板) |