cpp (C++)의 lower_bound가 정렬되지 않은 배열에 적용될 때 어떻게 동작하는지 질문하고 싶습니다. 다음 프로그램을 실행했을 때를 의미합니다.정렬되지 않은 배열의 cpp에서 lower_bound의 동작
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int arr[]={8,9,10,1,2,3};
auto itr= lower_bound(arr,arr+6,7);
cout<<*itr<<endl;
}
출력을 '2'로 지정했습니다. 그러나 lower_bound의 정의에 따르면 '<'과 'val'이 일치하지 않는 첫 번째 요소에 반복기를 제공합니다. 따라서이 정의에 따르면, "8은 7보다 작지 않으므로"8이되어야합니다. 정렬 된 배열에서 작동한다는 것을 알고 있지만,이 값 뒤에 로직이 있는지 또는 정크인지 여부를 알고 싶습니다.
감사합니다.
표준 라이브러리 함수의 전제 조건을 위반하면 정의되지 않은 동작이 발생합니다. – chris
그것은 작동하지 않으며 대답은 쓸모 없습니다. 만약 당신이 실제로 대답이 8이되는 방법에 관심이 있다면, 함수의 구현을 확인하십시오. – jrok