如何比较 C++ slice_array?为啥不能将其与 valarray 进行比较?
Posted
技术标签:
【中文标题】如何比较 C++ slice_array?为啥不能将其与 valarray 进行比较?【英文标题】: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 你能提供一些证据吗?试图用谷歌搜索它,但没有找到任何有意义的东西。
看来我错了。 ***.com/questions/2576688/…
@Lingxi 是的,我也读过。
【参考方案1】:
要比较slice_array,您目前必须使用valarray( const std::slice_array& )。
#include <valarray>
int main()
//Initialize valarray
std::valarray<int> val00,1,2,3,4,5,6,7,8,9;
std::valarray<int> val19,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++ slice_array?为啥不能将其与 valarray 进行比较?的主要内容,如果未能解决你的问题,请参考以下文章