boost::algorithm::one_of() in C++ library
Last Updated :
30 May, 2019
The one_of() function in C++ boost library is found under the header ‘boost/algorithm/cxx11/one_of.hpp’ which tests the elements of a sequence and returns true if exactly one of the element share the property given. It takes a sequence and a predicate, and returns true if the predicate returns true for exactly one given element in the sequence.
Syntax:
bool one_of ( InputIterator first, InputIterator last, Predicate p )
or
bool one_of ( const Range &R, Predicate p)
Parameters: The function accepts parameters as described below:
- first: It specifies the input iterators to the initial positions in a sequence.
- second: It specifies the input iterators to the final positions in a sequence.
- p: It specifies a unary predicate function that accepts an element and returns a bool.
- R: It is the complete sequence.
Return Value: The function returns true if the given predicate is true on exactly one of the element of the sequence, else it returns false.
Below is the implementation of the above approach:
Program-1:
#include <bits/stdc++.h>
#include <boost/algorithm/cxx11/one_of.hpp>
using namespace std;
bool isOdd( int i)
{
return i % 2 == 1;
}
int main()
{
int c[] = { 1, 2, 3 };
bool ans
= boost::algorithm::one_of(c, isOdd);
if (ans == 1)
cout << "Exactly one element is odd" ;
else
cout << "Exactly one element is not odd" ;
return 0;
}
|
Output:
Exactly one element is not odd
Program-2:
#include <bits/stdc++.h>
#include <boost/algorithm/cxx11/one_of.hpp>
using namespace std;
bool oneLessThanSeven( int i)
{
return i < 7;
}
int main()
{
int a[] = { 1, 9, 10, 8 };
bool ans
= boost::algorithm::one_of(a, a + 4,
oneLessThanSeven);
if (ans == 1)
cout << "Exactly one element is less than 7" ;
else
cout << "Exactly one element is not less than 7" ;
return 0;
}
|
Output:
Exactly one element is less than 7
Reference: https://www.boost.org/doc/libs/1_70_0/libs/algorithm/doc/html/the_boost_algorithm_library/CXX11/one_of.html
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...