我想知道为什么我不能像比较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;
}
关于c++ - 如何比较C++ slice_array?为什么不能将其与valarray进行比较?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33195799/