search_n
Searches for the first n consecutive elements with certain properties
Key Facts
Gyroscopic Couple: The rate of change of angular momentum () = (In the limit).- = Moment of Inertia.
- = Angular velocity
- = Angular velocity of precession.
Blaise Pascal (1623-1662) was a French mathematician, physicist, inventor, writer and Catholic philosopher.
Leonhard Euler (1707-1783) was a pioneering Swiss mathematician and physicist.
Definition
The search_n() algorithm is defined in the standard header <algorithm>, and in the nonstandard backward-compatibility header <algo.h>.Interface
#include <algorithm> template < class ForwardIterator1, class Diff2, class Type > ForwardIterator1 search_n( ForwardIterator1 first, ForwardIterator1 last, Size2 count, const Type& val ); template < class ForwardIterator1, class Size2, class Type, class BinaryPredicate > ForwardIterator1 search_n( ForwardIterator1 first, ForwardIterator1 last, Size2 count, const Type& val, BinaryPredicate comp );Parameters:
Parameter | Description |
---|---|
first | A forward iterator addressing the position of the first element in the range to be searched |
last | A forward iterator addressing the position one past the final element in the range to be searched |
count | The size of the subsequence being searched for |
val | The value of the elements in the sequence being searched for |
comp | User-defined predicate function object that defines the condition to be satisfied if two elements are to be taken as equivalent. A binary predicate takes two arguments and returns true when satisfied and false when not satisfied |
Description
Search_n searches for a subsequence ofcount
consecutive elements in the range [first, last)
, all of which are equal to val
.
The two versions of search_n differ in how they determine whether two elements are the same: the first uses operator==
, and the second uses the user-supplied function object comp
.Return Value
The return value is a forward iterator addressing the position of the first element of the first subsequence that matches the specified sequence or that is equivalent in a sense specified by a binary predicate.References
Example:
Example - search_n algorithm
Problem
The following example searches for three consecutive elements that have a value equal to or greater than 3.
Workings
#include <iostream> #include <algorithm> #include <deque> using namespace std; int main() { deque<int> coll; INSERT_ELEMENTS(coll,1,9); PRINT_ELEMENTS(coll); // find three consecutive elements with value 4 deque<int>::iterator pos; pos = search_n (coll.begin(), coll.end(), // range 4, // count 3); // value // print result if (pos != coll.end()) cout <<"four consecutive elements with value 3 " <<"start with "<<distance(coll.begin(),pos) +1 << ". element" << endl; else cout <<"no four consecutive elements with value 3 found"<< endl; // find three consecutive elements with value greater than 4 pos = search_n (coll.begin(), coll.end(), // range 4, // count 3, // value greater<int>()); // criterion // print result if (pos != coll.end()) { cout <<"four consecutive elements with value > 3 " <<"start with "<<distance(coll.begin(),pos) +1 <<". element"<<endl; else cout <<"no four consecutive elements with value > 3 found"<< endl; return 0; }
Solution
Output:
1 2 3 4 5 6 7 8 9
no four consecutive elements with value 3 found
four consecutive elements with value > 3 start with 4. element
no four consecutive elements with value 3 found
four consecutive elements with value > 3 start with 4. element