3
나는 한 쌍의 std :: vector가 있다고 가정합니다. 효율적으로 어떻게 std :: find 메서드를 사용하여 벡터의 적어도 하나의 요소가 (false, false)와 같지 않은지 확인하십시오.쌍의 벡터에 대한 조건을 찾으십시오
감사
나는 한 쌍의 std :: vector가 있다고 가정합니다. 효율적으로 어떻게 std :: find 메서드를 사용하여 벡터의 적어도 하나의 요소가 (false, false)와 같지 않은지 확인하십시오.쌍의 벡터에 대한 조건을 찾으십시오
감사
std::pair
과부하 operator==
, 당신은 긍정적를 위해 std::find
을 사용할 수 있도록 :
bool b = std::find(v.begin(), v.end(), std::make_pair(false, false)) == v.end();
을하고 부정적인 위해 std::find_if
를 사용할 수 있습니다
bool b = std::find_if(v.begin(), v.end(),
std::bind2nd(std::not_equal_to<std::pair<bool, bool> >(),
std::make_pair(false, false)))
!= v.end();
두 번째는 할 수있다 훨씬 더 깔끔하게 C++로 작성했습니다. 0x :
모든 요소가 (false, false)인지 확인해야한다는 것이 유감입니다. – Bob
@Banana : 'find_if'접근 방식을 사용하고 결과를 무효화 할 수 있습니다 (요소가없는 경우). 요소가 (false, false)와 같으면 모든 요소는 (false, false)와 같아야합니다. 또한 C++ 0x는 테스트를 더욱 깨끗하게 해주는'all' 알고리즘과'any' 알고리즘을 추가합니다. –
두 번째 솔루션이 내 문제를 해결했지만 세 번째 솔루션에 오류가있을 수 있습니다. – PersianGulf