我想知道为什么我不能像比较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/

10-11 16:05