数组类valarray还提供了另一种描述数组子集的方式:屏蔽子集。valarray类的对象经过“屏蔽”处理后,其返回结果为valarray<bool>型。将“屏蔽”作为数组(valarray)的下标,值为true的位表明对应的valarray型数组中的元素将作为结果的一部分。在此基础上,程序员同样可以在valarray的特定子集上操作。和slice_array相同,mask_array不能由程序开发者构造或复制。mask_array是将一个valarray<bool>型对象用作valarray数组下标的结果。屏蔽的valarray的元素个数不能多于以它作为下标的那个valarray的元素个数。
由上述说明可知,类mask_array的功能就是使用布尔表达式屏蔽相应元素。具体地说,mask_array和所有valarray subsets一样,具有以下属性:
1)若要定义某valarray型数组的具体子集,可以将布尔型的valarray作为参数传给val-array的下标操作符。
2)如果valarray是常量,子集表达式将导致新的valarray。
3)若valarray型数组不是常量,子集表达式将导致一个mask_array,后者以reference语意来表现valarray的相应元素。
4)mask_array提供赋值操作符和复合赋值操作符,用来修改子集中的元素。
5)通过型别转换,将mask_array与其他valarray和valarray的子集组合起来。mask_array的使用方法详见例6-8。
例6-8(www.xing528.com)
例6-8的执行效果如图6-8所示。
图6-8 例6-8的执行效果
总结
请读者要认真阅读上述例题,仔细体会类mask_array的功能和使用方法。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。