C ++ 코드가 있습니다.
auto test = vector<unsigned int>({3, 2, 1});
assert(is_sorted(test.begin(), test.end(), greater_equal<unsigned int>())); //passes
test = vector<unsigned int>({3, 1, 1});
assert(is_sorted(test.begin(), test.end(), greater_equal<unsigned int>())); //fails
두 번째는 왜 실패합니까?
is_sorted
비교 함수 개체에 대한 요구 사항이 있습니다. 특히 Compare 개념의 요구 사항을 충족해야합니다. 표준 라이브러리에서 사용하는 대부분의 (모두?) 비교 개체에 대해서도 동일한 요구 사항이 적용됩니다.
std::greater_equal
비교 개념의 요구 사항을 충족하지 않습니다. 특히 irreflexivity : For all a, comp(a,a)==false
또는 asymmetry : If comp(a,b)==true then comp(b,a)==false
(모든 a, b) 속성을 만족하지 않습니다 . 즉, std::greater_equal
엄격한 약한 순서가 아닙니다.
aschepler가 지적한대로는 std::greater
비교 개념을 충족하므로 아마도 당신이 찾고있는 것일 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다