2017-04-08 9 views
0

나는 사실 다음 코드 리턴보고 깜짝 놀랐다 :is_partitioned 행동에 요소가 만족하지 않을 때 술어

bool isSadPancake(char c) { return c == '-'; } 

string pancakes = "+++"; 

bool isParitioned = is_partitioned(pancakes.begin(), pancakes.end(), isSadPancake); 

내가 온라인 is_partitioned true를 반환했다 참조 문서를 경우 범위의 모든 요소 [첫째, 마지막) 술어를 만족하는은 그렇지 않은 모든 요소 앞에 나타납니다. 이 경우 술어를 만족하는 요소가 나타나지 않으므로 반환 값 false를 예상합니다. 이 예상되는 동작입니까? 표준에서 자세한 내용을 찾을 수 있습니까?

+1

관련 참조 [여기] (http://eel.is/c++draft/alg.partitions). – DeiDei

+0

당신의 사고에서의 논리적 오류는 "술어를 만족시키는 요소가 없다"는 것이 아니라는 것입니다. 관련이 없습니다. 알고리즘은 "술어를 만족시키는 요소가 나타나는지"와 관련이 없습니다. –

답변

4

또 다른 방법은 실제로는 술어를 만족하는 요소가 실제로 적용되지 않는 요소 앞에 나타나는 것을 볼 수 있습니다. 모두 모두 제로.

더 좋은 생각은 다음과 같습니다. 이 아닌 시퀀스가 ​​으로 분할된다는 의미는 무엇입니까? 즉, 먼저 술어를 만족하지 않는 요소를 찾은 다음 그 요소를 찾아야합니다. 그리고 당신은 당신의 순서에서 그러한 반례 표본을 찾을 수 없습니다. 범위는 [첫째, 마지막) 비어 있거나 페이지로 분할되는 경우