我想知道为什么我无法比较some_valarray[first_slice] < another_valarray[second_slice]
,因为我比较some_valarray < another_valarray
以及如何在没有复制的情况下以简单的方式做到这一点?当然,我可以在普通循环中迭代它们,但是,也许,有更优雅,可能,可优化的方式?
要比较slice_array你目前必须使用valarray( const std::slice_array& )。
#include <valarray>
int main() {
//Initialize valarray
std::valarray<int> val0{0,1,2,3,4,5,6,7,8,9};
std::valarray<int> val1{9,8,7,6,5,4,3,2,1,0};
//Compare valarray
std::valarray<bool> cmp0 = val0 < val1;
//Compare slice_array
std::valarray<bool> cmp1 =
std::valarray<int>(val0[std::slice(0,5,2)]) < std::valarray<int>(val1[std::slice(1,5,2)]);
//Compare slice_array since c++17
std::valarray<bool> cmp2 =
std::valarray(val0[std::slice(0,5,2)]) < std::valarray(val1[std::slice(1,5,2)]);
return 0;
}