【发布时间】:2021-03-13 16:27:56
【问题描述】:
假设我有 2 个大小相同的数组:
std::array<int,3> a{2,4,8};
std::array<int,3> b{1,2,3};
我想知道a > b说a是否大于b,当且仅当a中某个索引i的每个元素都大于相同索引的元素在b。
现在,我想使用迭代器来实现这个想法:
std::compare(a.begin(),a.end(),b.begin(),[&](const int& first,const int& second) {return first > second;}
我读过 std::lexicographical_compare 及其 _Compare 参数,但这种比较不符合我的目标。
有没有我写的比较功能?或者,我怎样才能创建自己的?
【问题讨论】:
-
我不确定我是否理解,但你所描述的听起来确实像字典顺序。你能解释一下为什么
std::lexicographical_compare不是你想要的吗?也许添加示例。对于您问题中的两个数组,您期望a < b得到什么结果? -
好的我现在明白这不是一个字典顺序,但仍然有一些例子有助于理解。也不清楚
std::compareafaik 是什么意思,没有那个名字的标准算法 -
std::lexicographical_compare失败,因为如果a[0] > b[0]则返回 true,但它也应比较其他元素... -
@largest_prime_is_463035818 我知道没有这个函数,但是我可以用其他函数实现还是自己写??
-
据我了解您的比较,请注意,因为它似乎不尊重严格的弱排序。
标签: c++ arrays iterator compare predicate