- valarray类提供了一种描述子集的方式: 屏蔽子集。
- valarray类经过“屏蔽”处理后,返回结果为
valarray<bool>
型 - 将“屏蔽”作为下标,值为true的位表明了对应的valarray数组中的元素将作为结果的一部分。
- 和slice_array一样,mask_array不能有程序开发者构造和复制。
- 屏蔽的valarray的元素的个数不能多于valarray的元素个数。
【mask_array就是使用布尔表达式来屏蔽相应元素的结果。】
例子:
//----------------------省略-----------------
valarray<int> val_1 = { 1, 2, 3, 4, 5, 6, 7 ,8,9};
bool b[] = {0,1,0,1,0,1,1};
valarray<bool> ms(b,7);//屏蔽
//bool值数对应,ms和val_1一一对应,0屏蔽,1选择
//2,4,6,7对应位置为1,不屏蔽
valarray<int> val_2 = val_1[ms];
//bool表达式,大于5的值
valarray<int> val_3 = val_1[val_1 > 5];
//----------------------省略-----------------
输出结果为:
val_2: 2 4 6 7
val_3: 6 7 8 9