<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>libqtpod: itunesdb::utils::SortablePtrVector< ElemType >::FilteredConstIterator< TUnaryPredicate > Struct Template Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.0 --> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li id="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul></div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul></div> <div class="nav"> <b>itunesdb</b>::<b>utils</b>::<a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector.html">SortablePtrVector</a>::<a class="el" href="structitunesdb_1_1utils_1_1SortablePtrVector_1_1FilteredConstIterator.html">FilteredConstIterator</a></div> <h1>itunesdb::utils::SortablePtrVector< ElemType >::FilteredConstIterator< TUnaryPredicate > Struct Template Reference</h1><!-- doxytag: class="itunesdb::utils::SortablePtrVector::FilteredConstIterator" --><!-- doxytag: inherits="itunesdb::utils::SortablePtrVector::ContainerVersionAwareIterator" --><code>#include <<a class="el" href="utils_8h-source.html">utils.h</a>></code> <p> <p>Inheritance diagram for itunesdb::utils::SortablePtrVector< ElemType >::FilteredConstIterator< TUnaryPredicate >: <p><center><img src="structitunesdb_1_1utils_1_1SortablePtrVector_1_1FilteredConstIterator.png" usemap="#itunesdb::utils::SortablePtrVector< ElemType >::FilteredConstIterator< TUnaryPredicate >_map" border="0" alt=""></center> <map name="itunesdb::utils::SortablePtrVector< ElemType >::FilteredConstIterator< TUnaryPredicate >_map"> <area href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html" alt="itunesdb::utils::SortablePtrVector< ElemType >::ContainerVersionAwareIterator< Container_T, Iter_T, TUnaryPredicate >" shape="rect" coords="0,56,693,80"> <area href="classitunesdb_1_1utils_1_1RangeIterator.html" alt="itunesdb::utils::RangeIterator< ElemType *, Iter_T, TUnaryPredicate >" shape="rect" coords="0,0,693,24"> </map> <a href="structitunesdb_1_1utils_1_1SortablePtrVector_1_1FilteredConstIterator-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structitunesdb_1_1utils_1_1SortablePtrVector_1_1FilteredConstIterator.html#9ced27168a8d71adcd50439b4a049f7a">FilteredConstIterator</a> (const <a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector.html">SortablePtrVector</a> &container, const TUnaryPredicate &predicate=TUnaryPredicate())</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new <a class="el" href="structitunesdb_1_1utils_1_1SortablePtrVector_1_1FilteredConstIterator.html">FilteredConstIterator</a> over all elements in container matching the given predicate. <a href="#9ced27168a8d71adcd50439b4a049f7a"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html#4e33d47b5ac8ae0a7e2169a05709b39c">isValid</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns false if the underlying container got changed outside the control of this iterator, true otherwise. <a href="#4e33d47b5ac8ae0a7e2169a05709b39c"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html#aa284de7fc6f564e65c8e7ed5a0fd16e">hasNext</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if there are elements left so calling <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#4ec45e4263c7e0a476d89f5ee19f3f2b">next()</a> would return the next element rather than causing a segfault. <a href="#aa284de7fc6f564e65c8e7ed5a0fd16e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">ElemType * </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#4ec45e4263c7e0a476d89f5ee19f3f2b">next</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the next element of the range of elements we iterate over. <a href="#4ec45e4263c7e0a476d89f5ee19f3f2b"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">ElemType * </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#3e7686b7d6777ad9b03e76f4003a3ff0">current</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the element returned by the last <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#4ec45e4263c7e0a476d89f5ee19f3f2b">next()</a> call. <a href="#3e7686b7d6777ad9b03e76f4003a3ff0"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#068841797df48ae34dc6b4d07dfd2f8d">remaining</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of elements remaining in this iterator. <a href="#068841797df48ae34dc6b4d07dfd2f8d"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">ElemType * </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#b0049fef206c47265d2c7afc6c5e53c8">last</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the last element this iterator would return. <a href="#b0049fef206c47265d2c7afc6c5e53c8"></a><br></td></tr> <tr><td colspan="2"><br><h2>Protected Types</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">RangeIterator</a>< ElemType *,<br> Iter_T, TUnaryPredicate > </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html#100d6ac294356919fa6a55004726553c">BaseRangeIterator</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The base type of this iterator. <a href="#100d6ac294356919fa6a55004726553c"></a><br></td></tr> <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#e21faebdbdd99993ab1e819672b87f4b">setRange</a> (Iter_Tpos, Iter_Tend)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the range to the given iterators. <a href="#e21faebdbdd99993ab1e819672b87f4b"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">Iter_T </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#4bee97e88324551a9f35abdcb403756c">currentPos</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the iterator pointing to the element returned by the last <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#4ec45e4263c7e0a476d89f5ee19f3f2b">next()</a> call. <a href="#4bee97e88324551a9f35abdcb403756c"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#921cb0ed265daa324f3fd9701233d948">empty</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if there are no elements left to be iterated over. <a href="#921cb0ed265daa324f3fd9701233d948"></a><br></td></tr> <tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">Container_T & </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html#4595082755ee5c4aea721cdeb22ca60e">m_container</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The container we iterate over. <a href="#4595082755ee5c4aea721cdeb22ca60e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html#7e8a500fe412e48401abc88e5b9a1c99">m_containerversion</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The version of the container we iterate over. <a href="#7e8a500fe412e48401abc88e5b9a1c99"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType *,<br> Iter_T > </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#7ae231f1092fd7b3bdd60735c0e4a253">m_dereferenceFun</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">RangeIteratorFunctions< ElemType *,<br> Iter_T, TUnaryPredicate,<br> <a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType *,<br> Iter_T > > </td><td class="memItemRight" valign="bottom"><a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#348eb41984e68a15806aadecf1374b10">m_helper</a></td></tr> <tr><td colspan="2"><br><h2>Friends</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="740536f3da868098bb7adf615124fe99"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::SortablePtrVector" ref="740536f3da868098bb7adf615124fe99" args="" --> class </td><td class="memItemRight" valign="bottom"><b>SortablePtrVector</b></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> <h3>template<class ElemType><br> template<typename TUnaryPredicate = TRUEPredicate><br> struct itunesdb::utils::SortablePtrVector< ElemType >::FilteredConstIterator< TUnaryPredicate ></h3> A filtered const Iterator over the elements of this container where the given predicate returned true. <dl class="see" compact><dt><b>See also:</b></dt><dd><code><a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">RangeIterator</a></code> for more details </dd></dl> <p> <hr><h2>Member Typedef Documentation</h2> <a class="anchor" name="100d6ac294356919fa6a55004726553c"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::BaseRangeIterator" ref="100d6ac294356919fa6a55004726553c" args="" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class ElemType> </div> <div class="memtemplate"> template<typename Container_T, typename Iter_T, typename TUnaryPredicate = TRUEPredicate> </div> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">RangeIterator</a>< ElemType*, Iter_T, TUnaryPredicate > <a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector.html">itunesdb::utils::SortablePtrVector</a>< ElemType >::<a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html">ContainerVersionAwareIterator</a>< Container_T, Iter_T, TUnaryPredicate >::<a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">BaseRangeIterator</a><code> [protected, inherited]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> The base type of this iterator. <p> </div> </div><p> <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="9ced27168a8d71adcd50439b4a049f7a"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::FilteredConstIterator" ref="9ced27168a8d71adcd50439b4a049f7a" args="(const SortablePtrVector &container, const TUnaryPredicate &predicate=TUnaryPredicate())" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class ElemType> </div> <div class="memtemplate"> template<typename TUnaryPredicate = TRUEPredicate> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector.html">itunesdb::utils::SortablePtrVector</a>< ElemType >::<a class="el" href="structitunesdb_1_1utils_1_1SortablePtrVector_1_1FilteredConstIterator.html">FilteredConstIterator</a>< TUnaryPredicate >::<a class="el" href="structitunesdb_1_1utils_1_1SortablePtrVector_1_1FilteredConstIterator.html">FilteredConstIterator</a> </td> <td>(</td> <td class="paramtype">const <a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector.html">SortablePtrVector</a> & </td> <td class="paramname"> <em>container</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const TUnaryPredicate & </td> <td class="paramname"> <em>predicate</em> = <code>TUnaryPredicate()</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Creates a new <a class="el" href="structitunesdb_1_1utils_1_1SortablePtrVector_1_1FilteredConstIterator.html">FilteredConstIterator</a> over all elements in container matching the given predicate. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>container</em> </td><td>the container to iterator over </td></tr> <tr><td valign="top"></td><td valign="top"><em>predicate</em> </td><td>the predicate to match the elements against </td></tr> </table> </dl> </div> </div><p> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="4e33d47b5ac8ae0a7e2169a05709b39c"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::isValid" ref="4e33d47b5ac8ae0a7e2169a05709b39c" args="() const" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class ElemType> </div> <div class="memtemplate"> template<typename Container_T, typename Iter_T, typename TUnaryPredicate = TRUEPredicate> </div> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector.html">itunesdb::utils::SortablePtrVector</a>< ElemType >::<a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html">ContainerVersionAwareIterator</a>< Container_T, Iter_T, TUnaryPredicate >::isValid </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> const<code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Returns false if the underlying container got changed outside the control of this iterator, true otherwise. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>false if the underlying container got changed outside the control of this iterator. </dd></dl> </div> </div><p> <a class="anchor" name="aa284de7fc6f564e65c8e7ed5a0fd16e"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::hasNext" ref="aa284de7fc6f564e65c8e7ed5a0fd16e" args="() const" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class ElemType> </div> <div class="memtemplate"> template<typename Container_T, typename Iter_T, typename TUnaryPredicate = TRUEPredicate> </div> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector.html">itunesdb::utils::SortablePtrVector</a>< ElemType >::<a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html">ContainerVersionAwareIterator</a>< Container_T, Iter_T, TUnaryPredicate >::hasNext </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> const<code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Returns true if there are elements left so calling <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#4ec45e4263c7e0a476d89f5ee19f3f2b">next()</a> would return the next element rather than causing a segfault. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>true if there are elements left </dd></dl> <p> Reimplemented from <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#3df43aec558b0db5c67388d8022228fd">itunesdb::utils::RangeIterator< ElemType *, Iter_T, TUnaryPredicate ></a>.<dl compact><dt><b>Examples: </b></dt><dd> <a class="el" href="listtests_8cpp-example.html#a13">listtests.cpp</a>.</dl> </div> </div><p> <a class="anchor" name="e21faebdbdd99993ab1e819672b87f4b"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::setRange" ref="e21faebdbdd99993ab1e819672b87f4b" args="(Iter_Tpos, Iter_Tend)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">itunesdb::utils::RangeIterator</a>< ElemType * , Iter_T , TUnaryPredicate , <a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType * , Iter_T > >::setRange </td> <td>(</td> <td class="paramtype">Iter_T </td> <td class="paramname"> <em>pos</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">Iter_T </td> <td class="paramname"> <em>end</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [inline, protected, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Sets the range to the given iterators. <p> </div> </div><p> <a class="anchor" name="4bee97e88324551a9f35abdcb403756c"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::currentPos" ref="4bee97e88324551a9f35abdcb403756c" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Iter_T <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">itunesdb::utils::RangeIterator</a>< ElemType * , Iter_T , TUnaryPredicate , <a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType * , Iter_T > >::currentPos </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [inline, protected, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Returns the iterator pointing to the element returned by the last <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#4ec45e4263c7e0a476d89f5ee19f3f2b">next()</a> call. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>the iterator pointing to the element returned by the last <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#4ec45e4263c7e0a476d89f5ee19f3f2b">next()</a> call </dd></dl> </div> </div><p> <a class="anchor" name="921cb0ed265daa324f3fd9701233d948"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::empty" ref="921cb0ed265daa324f3fd9701233d948" args="() const" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">itunesdb::utils::RangeIterator</a>< ElemType * , Iter_T , TUnaryPredicate , <a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType * , Iter_T > >::empty </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> const<code> [inline, protected, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Returns true if there are no elements left to be iterated over. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>true if there are no elements left to be iterated over </dd></dl> </div> </div><p> <a class="anchor" name="4ec45e4263c7e0a476d89f5ee19f3f2b"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::next" ref="4ec45e4263c7e0a476d89f5ee19f3f2b" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ElemType * <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">itunesdb::utils::RangeIterator</a>< ElemType * , Iter_T , TUnaryPredicate , <a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType * , Iter_T > >::next </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Returns the next element of the range of elements we iterate over. <p> This method positions the Iterator at the next element and returns it. The first call to this method will return the first element of the range. <br> If the iterator is filtered only those elements where the given predicate returned true are returned. <dl class="attention" compact><dt><b>Attention:</b></dt><dd>Always check if <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#3df43aec558b0db5c67388d8022228fd">hasNext()</a> returns true before calling next. Calling <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#4ec45e4263c7e0a476d89f5ee19f3f2b">next()</a> on an iterator already at the end of the range will cause a segfault. </dd></dl> <dl class="pre" compact><dt><b>Precondition:</b></dt><dd><a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#3df43aec558b0db5c67388d8022228fd">hasNext()</a> returns true </dd></dl> <dl class="post" compact><dt><b>Postcondition:</b></dt><dd>a successive call to <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#3e7686b7d6777ad9b03e76f4003a3ff0">current()</a> returns the element returned by this method </dd></dl> <dl compact><dt><b>Examples: </b></dt><dd> <a class="el" href="listtests_8cpp-example.html#a15">listtests.cpp</a>.</dl> </div> </div><p> <a class="anchor" name="3e7686b7d6777ad9b03e76f4003a3ff0"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::current" ref="3e7686b7d6777ad9b03e76f4003a3ff0" args="() const" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ElemType * <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">itunesdb::utils::RangeIterator</a>< ElemType * , Iter_T , TUnaryPredicate , <a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType * , Iter_T > >::current </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> const<code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Returns the element returned by the last <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#4ec45e4263c7e0a476d89f5ee19f3f2b">next()</a> call. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>the element returned by the last <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#4ec45e4263c7e0a476d89f5ee19f3f2b">next()</a> call </dd></dl> </div> </div><p> <a class="anchor" name="068841797df48ae34dc6b4d07dfd2f8d"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::remaining" ref="068841797df48ae34dc6b4d07dfd2f8d" args="() const" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">unsigned int <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">itunesdb::utils::RangeIterator</a>< ElemType * , Iter_T , TUnaryPredicate , <a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType * , Iter_T > >::remaining </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> const<code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Returns the number of elements remaining in this iterator. <p> ... meaning the number of times the <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#4ec45e4263c7e0a476d89f5ee19f3f2b">next()</a> method can be called before the <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#3df43aec558b0db5c67388d8022228fd">hasNext()</a> method willreturn false. For filtered iterators this may be a lengthy operation since the iterator needs to apply its filter over all elements to determine how many elements are left. <dl class="return" compact><dt><b>Returns:</b></dt><dd>the number of elements left </dd></dl> </div> </div><p> <a class="anchor" name="b0049fef206c47265d2c7afc6c5e53c8"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::last" ref="b0049fef206c47265d2c7afc6c5e53c8" args="() const" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ElemType * <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">itunesdb::utils::RangeIterator</a>< ElemType * , Iter_T , TUnaryPredicate , <a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType * , Iter_T > >::last </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> const<code> [inline, inherited]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Returns the last element this iterator would return. <p> This method is dangerous and makes no sense. Do not call this for empty iterators so at least check with <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#3df43aec558b0db5c67388d8022228fd">hasNext()</a> before. <dl class="return" compact><dt><b>Returns:</b></dt><dd>the last element this iterator would return </dd></dl> <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>it must have been ensured that the iterator is nonempty </dd></dl> </div> </div><p> <hr><h2>Member Data Documentation</h2> <a class="anchor" name="4595082755ee5c4aea721cdeb22ca60e"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::m_container" ref="4595082755ee5c4aea721cdeb22ca60e" args="" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class ElemType> </div> <div class="memtemplate"> template<typename Container_T, typename Iter_T, typename TUnaryPredicate = TRUEPredicate> </div> <table class="memname"> <tr> <td class="memname">Container_T& <a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector.html">itunesdb::utils::SortablePtrVector</a>< ElemType >::<a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html">ContainerVersionAwareIterator</a>< Container_T, Iter_T, TUnaryPredicate >::<a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html#4595082755ee5c4aea721cdeb22ca60e">m_container</a><code> [protected, inherited]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> The container we iterate over. <p> We need this to check our version and validity against </div> </div><p> <a class="anchor" name="7e8a500fe412e48401abc88e5b9a1c99"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::m_containerversion" ref="7e8a500fe412e48401abc88e5b9a1c99" args="" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class ElemType> </div> <div class="memtemplate"> template<typename Container_T, typename Iter_T, typename TUnaryPredicate = TRUEPredicate> </div> <table class="memname"> <tr> <td class="memname">unsigned long <a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector.html">itunesdb::utils::SortablePtrVector</a>< ElemType >::<a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html">ContainerVersionAwareIterator</a>< Container_T, Iter_T, TUnaryPredicate >::<a class="el" href="classitunesdb_1_1utils_1_1SortablePtrVector_1_1ContainerVersionAwareIterator.html#7e8a500fe412e48401abc88e5b9a1c99">m_containerversion</a><code> [protected, inherited]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> The version of the container we iterate over. <p> If this differs from m_container.m_version the iterator gets invalid. </div> </div><p> <a class="anchor" name="7ae231f1092fd7b3bdd60735c0e4a253"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::m_dereferenceFun" ref="7ae231f1092fd7b3bdd60735c0e4a253" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType * , Iter_T > <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">itunesdb::utils::RangeIterator</a>< ElemType * , Iter_T , TUnaryPredicate , <a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType * , Iter_T > >::<a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#7ae231f1092fd7b3bdd60735c0e4a253">m_dereferenceFun</a><code> [protected, inherited]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> Dereferencer to dereference an iterator to IterType </div> </div><p> <a class="anchor" name="348eb41984e68a15806aadecf1374b10"></a><!-- doxytag: member="itunesdb::utils::SortablePtrVector::FilteredConstIterator::m_helper" ref="348eb41984e68a15806aadecf1374b10" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">RangeIteratorFunctions<ElemType * , Iter_T , TUnaryPredicate , <a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType * , Iter_T > > <a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html">itunesdb::utils::RangeIterator</a>< ElemType * , Iter_T , TUnaryPredicate , <a class="el" href="structitunesdb_1_1utils_1_1DefaultDeref.html">DefaultDeref</a>< ElemType * , Iter_T > >::<a class="el" href="classitunesdb_1_1utils_1_1RangeIterator.html#348eb41984e68a15806aadecf1374b10">m_helper</a><code> [protected, inherited]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> Internal implementors of the underlying functions </div> </div><p> <hr>The documentation for this struct was generated from the following file:<ul> <li>libqtpod/src/<a class="el" href="utils_8h-source.html">utils.h</a></ul> <hr size="1"><address style="align: right;"><small>Generated on Wed Dec 19 00:15:20 2007 for libqtpod by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.0 </small></address> </body> </html>