【问题标题】:How to compare C++ slice_array? Why it cannot be compared as valarray?如何比较 C++ slice_array?为什么不能将其与 valarray 进行比较?
【发布时间】:2015-10-18 08:24:48
【问题描述】:

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

【问题讨论】:

  • 据我所知,valarray 已被弃用。
  • @Lingxi 你能提供一些证据吗?试图用谷歌搜索它,但没有找到任何有意义的东西。
  • @Lingxi 是的,我也读过。

标签: c++ stl valarray


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多