如何比较C ++ slice_array?为何无法将其作为valarray进行比较?

问题描述 投票:1回答:1

我想知道为什么我无法比较some_valarray[first_slice] < another_valarray[second_slice],因为我比较some_valarray < another_valarray以及如何在没有复制的情况下以简单的方式做到这一点?当然,我可以在普通循环中迭代它们,但是,也许,有更优雅,可能,可优化的方式?

c++ stl valarray
1个回答
1
投票

要比较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;
}
© www.soinside.com 2019 - 2024. All rights reserved.