Có một thuật toán STL/boost nào sẽ kiểm tra nếu tất cả các phần tử giữa hai trình vòng lặp khớp với một giá trị đã cho không? Hoặc cách khác là một biến vị ngữ trả về true
cho tất cả chúng?Có thuật toán STL/boost để kiểm tra tất cả các phần tử trong vùng chứa có khớp với giá trị không?
ví dụ: một cái gì đó giống như
template<class InputIterator, class T>
InputIterator all_match (InputIterator first, InputIterator last, const T& value)
{
bool allMatch = true;
while(allMatch && first!=last)
allMatch = (value == *first++);
return allMatch;
}
Hoặc
template <class InputIterator, class Predicate>
bool all_true (InputIterator first, InputIterator last, Predicate pred)
{
bool allTrue = true;
while (allTrue && first != last)
allTrue = pred(*first++);
return allTrue;
}
Điều đó sẽ hoạt động tốt. Cảm ơn. – GrahamS
thực sự tôi không nghĩ rằng cú pháp 'not_equal_to()' là hoàn toàn đúng. Tôi có thể làm điều gì đó sai, nhưng tôi đã phải sử dụng 'bind2nd' với nó như thế này:' std :: find_if (seq.begin(), seq.end(), std :: bind2nd (std :: not_equal_to() , val)) ' –
GrahamS