Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > 4bc66056a634db26a1f4d0845dc41ca6 > files > 6806

mrpt-doc-0.9.5-0.1.20110925svn2670.fc16.i686.rpm

<!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>STL extensions and metaprogramming</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<div align="left"><a href="http://www.mrpt.org/">Main MRPT website</a> &gt; <b>C++ reference</b> </div>
<div align="right">
<a href="index.html"><img border="0" src="mrpt_logo.png" alt="MRPT logo"></a>
</div>
<!-- Generated by Doxygen 1.7.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
          <div class="left">
            <form id="FSearchBox" action="search.php" method="get">
              <img id="MSearchSelect" src="search/mag.png" alt=""/>
              <input type="text" id="MSearchField" name="query" value="Search" size="20" accesskey="S" 
                     onfocus="searchBox.OnSearchFieldFocus(true)" 
                     onblur="searchBox.OnSearchFieldFocus(false)"/>
            </form>
          </div><div class="right"></div>
        </div>
      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Defines</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">STL extensions and metaprogramming</div>  </div>
<div class="ingroups"><a class="el" href="group__mrpt__base__grp.html">[mrpt-base]</a></div></div>
<div class="contents">
<div class="dynheader">
Collaboration diagram for STL extensions and metaprogramming:</div>
<div class="dyncontent">
<center><table><tr><td><img src="group__stlext__grp.png" border="0" alt="" usemap="#group____stlext____grp"/>
<map name="group____stlext____grp" id="group____stlext____grp">
<area shape="rect" id="node2" href="group__mrpt__base__grp.html" title=" Back to list of all libraries | See all modules &#160;&#160;" alt="" coords="5,5,93,32"/></map>
</td></tr></table></center>
</div>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1bimap.html">mrpt::utils::bimap</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A bidirectional version of <a class="el" href="classstd_1_1map.html" title="STL class.">std::map</a>, declared as bimap&lt;KEY,VALUE&gt; and which actually contains two <a class="el" href="classstd_1_1map.html" title="STL class.">std::map</a>'s, one for keys and another for values.  <a href="classmrpt_1_1utils_1_1bimap.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1circular__buffer.html">mrpt::utils::circular_buffer</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A circular buffer of fixed size (defined at construction-time), implemented with a <a class="el" href="classstd_1_1vector.html" title="STL class.">std::vector</a> as the underlying storage.  <a href="classmrpt_1_1utils_1_1circular__buffer.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1list__searchable.html">mrpt::utils::list_searchable</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This class implements a STL container with features of both, a <a class="el" href="classstd_1_1set.html" title="STL class.">std::set</a> and a <a class="el" href="classstd_1_1list.html" title="STL class.">std::list</a>.  <a href="classmrpt_1_1utils_1_1list__searchable.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1map__as__vector.html">mrpt::utils::map_as_vector</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A STL-like container which looks and behaves (almost exactly) like a std::map&lt;&gt; but is implemented as a linear std::vector&lt;&gt; indexed by KEY.  <a href="classmrpt_1_1utils_1_1map__as__vector.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_delete.html">mrpt::utils::metaprogramming::ObjectDelete</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An object for deleting pointers (intended for STL algorithms)  <a href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_delete.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_clear.html">mrpt::utils::metaprogramming::ObjectClear</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An object for clearing an object (invokes its method "-&gt;clear()") given a pointer or smart-pointer, intended for being used in STL algorithms.  <a href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_clear.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_clear2.html">mrpt::utils::metaprogramming::ObjectClear2</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An object for clearing an object (invokes its method ".clear()") given a pointer or smart-pointer, intended for being used in STL algorithms.  <a href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_clear2.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_clear_second.html">mrpt::utils::metaprogramming::ObjectClearSecond</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An object for clearing an object-&gt;second (invokes its method "clear()") given a pointer or smart-pointer, intended for being used in STL algorithms.  <a href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_clear_second.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_convert.html">mrpt::utils::metaprogramming::ObjectConvert</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An object for transforming between types/classes, intended for being used in STL algorithms.  <a href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_convert.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_make_unique.html">mrpt::utils::metaprogramming::ObjectMakeUnique</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An object for making smart pointers unique (ie, making copies if necessary), intended for being used in STL algorithms.  <a href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_make_unique.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_pair_make_unique.html">mrpt::utils::metaprogramming::ObjectPairMakeUnique</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An object for making smart pointers unique (ie, making copies if necessary), intended for being used in STL algorithms.  <a href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_pair_make_unique.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_clear_unique.html">mrpt::utils::metaprogramming::ObjectClearUnique</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An object for making smart pointers unique (ie, making copies if necessary), intended for being used in STL algorithms.  <a href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_clear_unique.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_read_from_stream.html">mrpt::utils::metaprogramming::ObjectReadFromStream</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An object for reading objects from a stream, intended for being used in STL algorithms.  <a href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_read_from_stream.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_write_to_stream.html">mrpt::utils::metaprogramming::ObjectWriteToStream</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An object for writing objects to a stream, intended for being used in STL algorithms.  <a href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_write_to_stream.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1metaprogramming_1_1_memory_bypasser_iterator.html">mrpt::utils::metaprogramming::MemoryBypasserIterator</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This class bypasses pointer access in iterators to pointers, thus allowing the use of algorithms that expect an object of class T with containers of T*.  <a href="classmrpt_1_1utils_1_1metaprogramming_1_1_memory_bypasser_iterator.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1metaprogramming_1_1_binary_member_function_wrapper.html">mrpt::utils::metaprogramming::BinaryMemberFunctionWrapper</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This template encapsulates a binary member function and a single object into a function expecting the two parameters of the member function.  <a href="classmrpt_1_1utils_1_1metaprogramming_1_1_binary_member_function_wrapper.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1metaprogramming_1_1_unary_member_function_wrapper.html">mrpt::utils::metaprogramming::UnaryMemberFunctionWrapper</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This template encapsulates an unary member function and a single object into a function expecting the parameter of the member function.  <a href="classmrpt_1_1utils_1_1metaprogramming_1_1_unary_member_function_wrapper.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1metaprogramming_1_1_member_function_wrapper.html">mrpt::utils::metaprogramming::MemberFunctionWrapper</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This template encapsulates a member function without arguments and a single object into a function.  <a href="classmrpt_1_1utils_1_1metaprogramming_1_1_member_function_wrapper.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1metaprogramming_1_1_non_const_bind1st.html">mrpt::utils::metaprogramming::NonConstBind1st</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent of std::bind1st for functions with non-const arguments.  <a href="classmrpt_1_1utils_1_1metaprogramming_1_1_non_const_bind1st.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1metaprogramming_1_1_non_const_bind2nd.html">mrpt::utils::metaprogramming::NonConstBind2nd</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent of std::bind2nd for functions with non-const arguments.  <a href="classmrpt_1_1utils_1_1metaprogramming_1_1_non_const_bind2nd.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1ci__less.html">mrpt::utils::ci_less</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A case-insensitive comparator struct for usage within STL containers, eg: map&lt;string,string,ci_less&gt;  <a href="structmrpt_1_1utils_1_1ci__less.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1map__traits__stdmap.html">mrpt::utils::map_traits_stdmap</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Traits for using a std::map&lt;&gt; (sparse representation)  <a href="structmrpt_1_1utils_1_1map__traits__stdmap.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1map__traits__map__as__vector.html">mrpt::utils::map_traits_map_as_vector</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Traits for using a mrpt::utils::map_as_vector&lt;&gt; (dense, fastest representation)  <a href="structmrpt_1_1utils_1_1map__traits__map__as__vector.html#details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemrpt_1_1utils_1_1metaprogramming.html">mrpt::utils::metaprogramming</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><p>A set of utility objects for metaprogramming with STL algorithms. </p>
<br/></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga6e9751bd4a03af62ab1adb1509a6182b">MRPTSTL_SERIALIZABLE_SEQ_CONTAINER</a>(CONTAINER)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#gacbe319059d7b0f530b4eb2e8e362e524">MRPTSTL_SERIALIZABLE_ASSOC_CONTAINER</a>(CONTAINER)</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#gadaaa552aaf3cf45f086333c0b3aa07f4">mrpt::utils::metaprogramming::DeleteContainer</a> (T &amp;container)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A function which deletes a container of pointers.  <a href="#gadaaa552aaf3cf45f086333c0b3aa07f4"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename it_src , typename it_dst &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#gaa09727cae72f8986348c41e13a3f1eb6">mrpt::utils::metaprogramming::copy_typecasting</a> (it_src first, it_src last, it_dst target)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Behaves like std::copy but allows the source and target iterators to be of different types through static typecasting.  <a href="#gaa09727cae72f8986348c41e13a3f1eb6"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename src_container , typename dst_container &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga5263f98f648cdc32c1a74efc05d48d60">mrpt::utils::metaprogramming::copy_container_typecasting</a> (const src_container &amp;src, dst_container &amp;trg)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy all the elements in a container (vector, deque, list) into a different one performing the appropriate typecasting.  <a href="#ga5263f98f648cdc32c1a74efc05d48d60"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename U , typename T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">MemoryBypasserIterator&lt; T, U &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga8e4c960e8ea93586b181c7ce63f2d0f5">mrpt::utils::metaprogramming::bypassPointer</a> (const T &amp;baseIterator)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sintactic sugar for <a class="el" href="classmrpt_1_1utils_1_1metaprogramming_1_1_memory_bypasser_iterator.html" title="This class bypasses pointer access in iterators to pointers, thus allowing the use of algorithms that...">MemoryBypasserIterator</a>.  <a href="#ga8e4c960e8ea93586b181c7ce63f2d0f5"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T , typename U1 , typename U2 , typename V &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">BinaryMemberFunctionWrapper&lt; T, <br class="typebreak"/>
U1, U2, V &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga312b016e67b4b7c0438fd9523d83d447">mrpt::utils::metaprogramming::wrapMember</a> (V &amp;obj, T(V::*fun)(U1, U2))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This function creates a function from an object and a member function.  <a href="#ga312b016e67b4b7c0438fd9523d83d447"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , typename V &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">UnaryMemberFunctionWrapper&lt; T, <br class="typebreak"/>
U, V &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga15235972fd7c18534c13c3eb0b371024">mrpt::utils::metaprogramming::wrapMember</a> (V &amp;obj, T(V::*fun)(U))</td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T , typename V &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">MemberFunctionWrapper&lt; T, V &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga34f7c25bf9bff668efdf2f33e1d87e51">mrpt::utils::metaprogramming::wrapMember</a> (V &amp;obj, T(V::*fun)(void))</td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename Op &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">NonConstBind1st&lt; Op &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga117bd381b8f0b2f9216d0c2f78bbe843">mrpt::utils::metaprogramming::nonConstBind1st</a> (Op &amp;o, typename Op::first_argument_type &amp;t)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Use this function instead of directly calling <a class="el" href="classmrpt_1_1utils_1_1metaprogramming_1_1_non_const_bind1st.html" title="Equivalent of std::bind1st for functions with non-const arguments.">NonConstBind1st</a>.  <a href="#ga117bd381b8f0b2f9216d0c2f78bbe843"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename Op &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">NonConstBind2nd&lt; Op &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga3adb0c601312a6404a50ae746526fac4">mrpt::utils::metaprogramming::nonConstBind2nd</a> (Op &amp;o, typename Op::second_argument_type &amp;t)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not directly use the <a class="el" href="classmrpt_1_1utils_1_1metaprogramming_1_1_non_const_bind2nd.html" title="Equivalent of std::bind2nd for functions with non-const arguments.">NonConstBind2nd</a> class directly.  <a href="#ga3adb0c601312a6404a50ae746526fac4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga3fe5e4224b9e59419e84795f28977b86">mrpt::utils::MRPTSTL_SERIALIZABLE_SEQ_CONTAINER</a> (<a class="el" href="classstd_1_1vector.html">std::vector</a>) MRPTSTL_SERIALIZABLE_SEQ_CONTAINER(std</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Template method to serialize a STL pair.  <a href="#ga3fe5e4224b9e59419e84795f28977b86"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T1 , class T2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">CStream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga13c0c64816a187c4198996ab8ce022b6">mrpt::utils::operator&gt;&gt;</a> (CStream &amp;in, std::pair&lt; T1, T2 &gt; &amp;obj)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Template method to deserialize a STL pair.  <a href="#ga13c0c64816a187c4198996ab8ce022b6"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T , class CONTAINER &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">size_t&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga0683c85522dd9009f2c2801c18e12eae">mrpt::utils::find_in_vector</a> (const T &amp;value, const CONTAINER &amp;vect)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the index of the value "T" in the container "vect" (<a class="el" href="classstd_1_1vector.html" title="STL class.">std::vector</a>,<a class="el" href="classstd_1_1deque.html" title="STL class.">std::deque</a>,etc), or string::npos if not found.  <a href="#ga0683c85522dd9009f2c2801c18e12eae"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1list.html">std::list</a>&lt; T &gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#gac2cbbb352f5b7daa375a029b9a65f9b5">mrpt::utils::erase_return_next</a> (<a class="el" href="classstd_1_1list.html">std::list</a>&lt; T &gt; &amp;cont, typename <a class="el" href="classstd_1_1list.html">std::list</a>&lt; T &gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> &amp;it)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Calls the standard "erase" method of a STL container, but also returns an iterator to the next element in the container (or <a class="el" href="eigen__plugins_8h.html#ade5b39864c905cbb824d0ff6eb0d888c">end</a> if none)  <a href="#gac2cbbb352f5b7daa375a029b9a65f9b5"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class K , class V &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1map.html">std::map</a>&lt; K, V &gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga2fe6bf9b8c0bcea04324d0f3e6beec84">mrpt::utils::erase_return_next</a> (<a class="el" href="classstd_1_1map.html">std::map</a>&lt; K, V &gt; &amp;cont, typename <a class="el" href="classstd_1_1map.html">std::map</a>&lt; K, V &gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> &amp;it)</td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class K , class V &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1multimap.html">std::multimap</a>&lt; K, V &gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga20dc9a22082b67aa35dda2087c182e89">mrpt::utils::erase_return_next</a> (<a class="el" href="classstd_1_1multimap.html">std::multimap</a>&lt; K, V &gt; &amp;cont, typename <a class="el" href="classstd_1_1multimap.html">std::multimap</a>&lt; K, V &gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> &amp;it)</td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1set.html">std::set</a>&lt; T &gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#gac73187001985ae3ef41a8040a792db12">mrpt::utils::erase_return_next</a> (<a class="el" href="classstd_1_1set.html">std::set</a>&lt; T &gt; &amp;cont, typename <a class="el" href="classstd_1_1set.html">std::set</a>&lt; T &gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> &amp;it)</td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1string.html">std::string</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga39a976e64941bfbbcde6969124bdd6c5">mrpt::utils::sprintf_vector</a> (const char *fmt, const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;V)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates a string for a vector in the format [A,B,C,...] to std::cout, and the fmt string for <b>each</b> vector element.  <a href="#ga39a976e64941bfbbcde6969124bdd6c5"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename Derived &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1string.html">std::string</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#gad16f1beaaa537e76df642cfec8e59399">mrpt::utils::sprintf_vector</a> (const char *fmt, const <a class="el" href="class_eigen_1_1_matrix_base.html">Eigen::MatrixBase</a>&lt; Derived &gt; &amp;V)</td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#gac1fd539c110cc511a60fcc0675cad366">mrpt::utils::printf_vector</a> (const char *fmt, const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;V)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints a vector in the format [A,B,C,...] to std::cout, and the fmt string for <b>each</b> vector element.  <a href="#gac1fd539c110cc511a60fcc0675cad366"></a><br/></td></tr>
</table>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="gacbe319059d7b0f530b4eb2e8e362e524"></a><!-- doxytag: member="stl_extensions.h::MRPTSTL_SERIALIZABLE_ASSOC_CONTAINER" ref="gacbe319059d7b0f530b4eb2e8e362e524" args="(CONTAINER)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MRPTSTL_SERIALIZABLE_ASSOC_CONTAINER</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">CONTAINER</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="stl__extensions_8h_source.html#l00089">89</a> of file <a class="el" href="stl__extensions_8h_source.html">stl_extensions.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga6e9751bd4a03af62ab1adb1509a6182b"></a><!-- doxytag: member="stl_extensions.h::MRPTSTL_SERIALIZABLE_SEQ_CONTAINER" ref="ga6e9751bd4a03af62ab1adb1509a6182b" args="(CONTAINER)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MRPTSTL_SERIALIZABLE_SEQ_CONTAINER</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">CONTAINER</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="comment">/** Template method to serialize a sequential STL container  */</span> \
                        template &lt;class T,class _Ax&gt; \
                        CStream&amp; operator &lt;&lt; (CStream&amp; out, const CONTAINER&lt;T,_Ax&gt; &amp;obj) \
                        { \
                                out &lt;&lt; string(#CONTAINER) &lt;&lt; TTypeName&lt;T&gt;::get(); \
                                out &lt;&lt; static_cast&lt;uint32_t&gt;(obj.size()); \
                                for_each( obj.begin(), obj.end(), <a class="code" href="structmrpt_1_1utils_1_1metaprogramming_1_1_object_write_to_stream.html" title="An object for writing objects to a stream, intended for being used in STL algorithms.">ObjectWriteToStream</a>(&amp;out) ); \
                                return out; \
                        } \<span class="comment"></span>
<span class="comment">                        /** Template method to deserialize a sequential STL container */</span> \
                        template &lt;class T,class _Ax&gt;  \
                        CStream&amp; <a class="code" href="namespacemrpt_1_1math.html#ab55e39255f4b544e7693867d22a70b91">operator &gt;&gt; </a>(<a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449">CStream</a>&amp; in, CONTAINER&lt;T,_Ax&gt; &amp;obj) \
                        { \
                                obj.clear(); \
                                string pref,stored_T; \
                                in &gt;&gt; pref; \
                                if (pref!=#CONTAINER) <a class="code" href="mrpt__macros_8h.html#aaa3f404ea85a6575a7139f8d101370ba">THROW_EXCEPTION</a>(<a class="code" href="namespacemrpt.html#a3a27af794b658df5491e2b7678f8ccb8" title="A std::string version of C sprintf.">format</a>(&quot;Error: serialized container %s&lt;%s&gt;&#39;s preambles is wrong: &#39;%s&#39;&quot;,<span class="preprocessor">#CONTAINER,TTypeName&lt;T&gt;::get().c_str(),pref.c_str() )) \</span>
<span class="preprocessor">                                in &gt;&gt; stored_T; \</span>
<span class="preprocessor">                                if (stored_T != TTypeName&lt;T&gt;::get() ) THROW_EXCEPTION(format(&quot;Error: serialized container %s&lt; %s != %s &gt;&quot;,#CONTAINER,stored_T.c_str(),TTypeName&lt;T&gt;::get().c_str() )) \</span>
<span class="preprocessor">                                uint32_t n; \</span>
<span class="preprocessor">                                in &gt;&gt; n; \</span>
<span class="preprocessor">                                obj.resize(n); \</span>
<span class="preprocessor">                                for_each( obj.begin(), obj.end(), ObjectReadFromStream(&amp;in) ); \</span>
<span class="preprocessor">                                return in; \</span>
<span class="preprocessor">                        }</span>
</pre></div>
<p>Definition at line <a class="el" href="stl__extensions_8h_source.html#l00061">61</a> of file <a class="el" href="stl__extensions_8h_source.html">stl_extensions.h</a>.</p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga8e4c960e8ea93586b181c7ce63f2d0f5"></a><!-- doxytag: member="mrpt::utils::metaprogramming::bypassPointer" ref="ga8e4c960e8ea93586b181c7ce63f2d0f5" args="(const T &amp;baseIterator)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename U , typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">MemoryBypasserIterator&lt;T,U&gt; mrpt::utils::metaprogramming::bypassPointer </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>baseIterator</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sintactic sugar for <a class="el" href="classmrpt_1_1utils_1_1metaprogramming_1_1_memory_bypasser_iterator.html" title="This class bypasses pointer access in iterators to pointers, thus allowing the use of algorithms that...">MemoryBypasserIterator</a>. </p>
<p>For example, having the following declarations: vector&lt;double *&gt; vec; void modifyVal(double &amp;v); The following sentence is not legal: for_each(vec.begin(),vec.end(),&amp;modifyVal) But this one is: for_each(bypassPointer(vec.begin()),bypassPointer(vec.end()),&amp;modifyVal) </p>

<p>Definition at line <a class="el" href="metaprogramming_8h_source.html#l00272">272</a> of file <a class="el" href="metaprogramming_8h_source.html">metaprogramming.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga5263f98f648cdc32c1a74efc05d48d60"></a><!-- doxytag: member="mrpt::utils::metaprogramming::copy_container_typecasting" ref="ga5263f98f648cdc32c1a74efc05d48d60" args="(const src_container &amp;src, dst_container &amp;trg)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename src_container , typename dst_container &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::utils::metaprogramming::copy_container_typecasting </td>
          <td>(</td>
          <td class="paramtype">const src_container &amp;&#160;</td>
          <td class="paramname"><em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">dst_container &amp;&#160;</td>
          <td class="paramname"><em>trg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Copy all the elements in a container (vector, deque, list) into a different one performing the appropriate typecasting. </p>
<p>The target container is automatically resized to the appropriate size, and previous contents are lost. This can be used to assign <a class="el" href="classstd_1_1vector.html" title="STL class.">std::vector</a>'s of different types: </p>
<div class="fragment"><pre class="fragment">   std::vector&lt;int&gt;    vi(10);
   std::vector&lt;float&gt;  vf;
   vf = vi;   <span class="comment">// Compiler error</span>
   <a class="code" href="group__stlext__grp.html#ga5263f98f648cdc32c1a74efc05d48d60" title="Copy all the elements in a container (vector, deque, list) into a different one performing the approp...">mrpt::utils::metaprogramming::copy_container_typecasting</a>(v1,vf);  <span class="comment">// Ok</span>
</pre></div> 
<p>Definition at line <a class="el" href="metaprogramming_8h_source.html#l00185">185</a> of file <a class="el" href="metaprogramming_8h_source.html">metaprogramming.h</a>.</p>

<p>Referenced by <a class="el" href="_c_angular_observation_mesh_8h_source.html#l00395">mrpt::opengl::CAngularObservationMesh::FTrace2D::operator()()</a>.</p>

</div>
</div>
<a class="anchor" id="gaa09727cae72f8986348c41e13a3f1eb6"></a><!-- doxytag: member="mrpt::utils::metaprogramming::copy_typecasting" ref="gaa09727cae72f8986348c41e13a3f1eb6" args="(it_src first, it_src last, it_dst target)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename it_src , typename it_dst &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::utils::metaprogramming::copy_typecasting </td>
          <td>(</td>
          <td class="paramtype">it_src&#160;</td>
          <td class="paramname"><em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">it_src&#160;</td>
          <td class="paramname"><em>last</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">it_dst&#160;</td>
          <td class="paramname"><em>target</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Behaves like std::copy but allows the source and target iterators to be of different types through static typecasting. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>As in std::copy, the target iterator must point to the first "slot" where to put the first transformed element, and sufficient space must be allocated in advance. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__stlext__grp.html#ga5263f98f648cdc32c1a74efc05d48d60" title="Copy all the elements in a container (vector, deque, list) into a different one performing the approp...">copy_container_typecasting</a> </dd></dl>

<p>Definition at line <a class="el" href="metaprogramming_8h_source.html#l00168">168</a> of file <a class="el" href="metaprogramming_8h_source.html">metaprogramming.h</a>.</p>

</div>
</div>
<a class="anchor" id="gadaaa552aaf3cf45f086333c0b3aa07f4"></a><!-- doxytag: member="mrpt::utils::metaprogramming::DeleteContainer" ref="gadaaa552aaf3cf45f086333c0b3aa07f4" args="(T &amp;container)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::utils::metaprogramming::DeleteContainer </td>
          <td>(</td>
          <td class="paramtype">T &amp;&#160;</td>
          <td class="paramname"><em>container</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>A function which deletes a container of pointers. </p>

<p>Definition at line <a class="el" href="metaprogramming_8h_source.html#l00054">54</a> of file <a class="el" href="metaprogramming_8h_source.html">metaprogramming.h</a>.</p>

</div>
</div>
<a class="anchor" id="gac2cbbb352f5b7daa375a029b9a65f9b5"></a><!-- doxytag: member="mrpt::utils::erase_return_next" ref="gac2cbbb352f5b7daa375a029b9a65f9b5" args="(std::list&lt; T &gt; &amp;cont, typename std::list&lt; T &gt;::iterator &amp;it)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1list.html">std::list</a>&lt;T&gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> mrpt::utils::erase_return_next </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classstd_1_1list.html">std::list</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>cont</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename <a class="el" href="classstd_1_1list.html">std::list</a>&lt; T &gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> &amp;&#160;</td>
          <td class="paramname"><em>it</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Calls the standard "erase" method of a STL container, but also returns an iterator to the next element in the container (or <a class="el" href="eigen__plugins_8h.html#ade5b39864c905cbb824d0ff6eb0d888c">end</a> if none) </p>

<p>Definition at line <a class="el" href="stl__extensions_8h_source.html#l00205">205</a> of file <a class="el" href="stl__extensions_8h_source.html">stl_extensions.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga2fe6bf9b8c0bcea04324d0f3e6beec84"></a><!-- doxytag: member="mrpt::utils::erase_return_next" ref="ga2fe6bf9b8c0bcea04324d0f3e6beec84" args="(std::map&lt; K, V &gt; &amp;cont, typename std::map&lt; K, V &gt;::iterator &amp;it)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class K , class V &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1map.html">std::map</a>&lt;K,V&gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> mrpt::utils::erase_return_next </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classstd_1_1map.html">std::map</a>&lt; K, V &gt; &amp;&#160;</td>
          <td class="paramname"><em>cont</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename <a class="el" href="classstd_1_1map.html">std::map</a>&lt; K, V &gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> &amp;&#160;</td>
          <td class="paramname"><em>it</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

<p>Definition at line <a class="el" href="stl__extensions_8h_source.html#l00210">210</a> of file <a class="el" href="stl__extensions_8h_source.html">stl_extensions.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga20dc9a22082b67aa35dda2087c182e89"></a><!-- doxytag: member="mrpt::utils::erase_return_next" ref="ga20dc9a22082b67aa35dda2087c182e89" args="(std::multimap&lt; K, V &gt; &amp;cont, typename std::multimap&lt; K, V &gt;::iterator &amp;it)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class K , class V &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1multimap.html">std::multimap</a>&lt;K,V&gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> mrpt::utils::erase_return_next </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classstd_1_1multimap.html">std::multimap</a>&lt; K, V &gt; &amp;&#160;</td>
          <td class="paramname"><em>cont</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename <a class="el" href="classstd_1_1multimap.html">std::multimap</a>&lt; K, V &gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> &amp;&#160;</td>
          <td class="paramname"><em>it</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

<p>Definition at line <a class="el" href="stl__extensions_8h_source.html#l00217">217</a> of file <a class="el" href="stl__extensions_8h_source.html">stl_extensions.h</a>.</p>

</div>
</div>
<a class="anchor" id="gac73187001985ae3ef41a8040a792db12"></a><!-- doxytag: member="mrpt::utils::erase_return_next" ref="gac73187001985ae3ef41a8040a792db12" args="(std::set&lt; T &gt; &amp;cont, typename std::set&lt; T &gt;::iterator &amp;it)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1set.html">std::set</a>&lt;T&gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> mrpt::utils::erase_return_next </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classstd_1_1set.html">std::set</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>cont</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename <a class="el" href="classstd_1_1set.html">std::set</a>&lt; T &gt;::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> &amp;&#160;</td>
          <td class="paramname"><em>it</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

<p>Definition at line <a class="el" href="stl__extensions_8h_source.html#l00224">224</a> of file <a class="el" href="stl__extensions_8h_source.html">stl_extensions.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga0683c85522dd9009f2c2801c18e12eae"></a><!-- doxytag: member="mrpt::utils::find_in_vector" ref="ga0683c85522dd9009f2c2801c18e12eae" args="(const T &amp;value, const CONTAINER &amp;vect)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T , class CONTAINER &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::utils::find_in_vector </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const CONTAINER &amp;&#160;</td>
          <td class="paramname"><em>vect</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the index of the value "T" in the container "vect" (<a class="el" href="classstd_1_1vector.html" title="STL class.">std::vector</a>,<a class="el" href="classstd_1_1deque.html" title="STL class.">std::deque</a>,etc), or string::npos if not found. </p>

<p>Definition at line <a class="el" href="stl__extensions_8h_source.html#l00196">196</a> of file <a class="el" href="stl__extensions_8h_source.html">stl_extensions.h</a>.</p>

<p>References <a class="el" href="group__geometry__grp.html#ga8c0a76e906f12560cfa49fcd269c8398">mrpt::math::distance()</a>.</p>

<p>Referenced by <a class="el" href="_c_kalman_filter_capable_8h_source.html#l00459">mrpt::bayes::CKalmanFilterCapable&lt; 7, 3, 3, 7 &gt;::runOneKalmanIteration()</a>, and <a class="el" href="levmarq_8h_source.html#l00073">mrpt::graphslam::optimize_graph_spa_levmarq()</a>.</p>

</div>
</div>
<a class="anchor" id="ga3fe5e4224b9e59419e84795f28977b86"></a><!-- doxytag: member="mrpt::utils::MRPTSTL_SERIALIZABLE_SEQ_CONTAINER" ref="ga3fe5e4224b9e59419e84795f28977b86" args="(std::vector) MRPTSTL_SERIALIZABLE_SEQ_CONTAINER(std" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::utils::MRPTSTL_SERIALIZABLE_SEQ_CONTAINER </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classstd_1_1vector.html">std::vector</a>&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Template method to serialize a STL pair. </p>

<p>Definition at line <a class="el" href="stl__extensions_8h_source.html#l00125">125</a> of file <a class="el" href="stl__extensions_8h_source.html">stl_extensions.h</a>.</p>

<p>References <a class="el" href="stl__extensions_8h.html#a81438265757e704ac4db6f4382426a62">MRPTSTL_SERIALIZABLE_SIMPLE_ASSOC_CONTAINER</a>.</p>

</div>
</div>
<a class="anchor" id="ga117bd381b8f0b2f9216d0c2f78bbe843"></a><!-- doxytag: member="mrpt::utils::metaprogramming::nonConstBind1st" ref="ga117bd381b8f0b2f9216d0c2f78bbe843" args="(Op &amp;o, typename Op::first_argument_type &amp;t)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Op &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">NonConstBind1st&lt;Op&gt; mrpt::utils::metaprogramming::nonConstBind1st </td>
          <td>(</td>
          <td class="paramtype">Op &amp;&#160;</td>
          <td class="paramname"><em>o</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename Op::first_argument_type &amp;&#160;</td>
          <td class="paramname"><em>t</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Use this function instead of directly calling <a class="el" href="classmrpt_1_1utils_1_1metaprogramming_1_1_non_const_bind1st.html" title="Equivalent of std::bind1st for functions with non-const arguments.">NonConstBind1st</a>. </p>

<p>Definition at line <a class="el" href="metaprogramming_8h_source.html#l00356">356</a> of file <a class="el" href="metaprogramming_8h_source.html">metaprogramming.h</a>.</p>

<p>References <a class="el" href="eigen__plugins_8h_source.html#l00490">t()</a>.</p>

</div>
</div>
<a class="anchor" id="ga3adb0c601312a6404a50ae746526fac4"></a><!-- doxytag: member="mrpt::utils::metaprogramming::nonConstBind2nd" ref="ga3adb0c601312a6404a50ae746526fac4" args="(Op &amp;o, typename Op::second_argument_type &amp;t)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Op &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">NonConstBind2nd&lt;Op&gt; mrpt::utils::metaprogramming::nonConstBind2nd </td>
          <td>(</td>
          <td class="paramtype">Op &amp;&#160;</td>
          <td class="paramname"><em>o</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">typename Op::second_argument_type &amp;&#160;</td>
          <td class="paramname"><em>t</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Do not directly use the <a class="el" href="classmrpt_1_1utils_1_1metaprogramming_1_1_non_const_bind2nd.html" title="Equivalent of std::bind2nd for functions with non-const arguments.">NonConstBind2nd</a> class directly. </p>
<p>Use this function. </p>

<p>Definition at line <a class="el" href="metaprogramming_8h_source.html#l00375">375</a> of file <a class="el" href="metaprogramming_8h_source.html">metaprogramming.h</a>.</p>

<p>References <a class="el" href="eigen__plugins_8h_source.html#l00490">t()</a>.</p>

</div>
</div>
<a class="anchor" id="ga13c0c64816a187c4198996ab8ce022b6"></a><!-- doxytag: member="mrpt::utils::operator&gt;&gt;" ref="ga13c0c64816a187c4198996ab8ce022b6" args="(CStream &amp;in, std::pair&lt; T1, T2 &gt; &amp;obj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T1 , class T2 &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">CStream&amp; mrpt::utils::operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype">CStream &amp;&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::pair&lt; T1, T2 &gt; &amp;&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Template method to deserialize a STL pair. </p>

<p>Definition at line <a class="el" href="stl__extensions_8h_source.html#l00179">179</a> of file <a class="el" href="stl__extensions_8h_source.html">stl_extensions.h</a>.</p>

<p>References <a class="el" href="mrpt__macros_8h_source.html#l00131">THROW_EXCEPTION</a>, and <a class="el" href="namespacemrpt.html#a3a27af794b658df5491e2b7678f8ccb8">mrpt::format()</a>.</p>

</div>
</div>
<a class="anchor" id="gac1fd539c110cc511a60fcc0675cad366"></a><!-- doxytag: member="mrpt::utils::printf_vector" ref="gac1fd539c110cc511a60fcc0675cad366" args="(const char *fmt, const std::vector&lt; T &gt; &amp;V)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::utils::printf_vector </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fmt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>V</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Prints a vector in the format [A,B,C,...] to std::cout, and the fmt string for <b>each</b> vector element. </p>

<p>Definition at line <a class="el" href="stl__extensions_8h_source.html#l00262">262</a> of file <a class="el" href="stl__extensions_8h_source.html">stl_extensions.h</a>.</p>

<p>References <a class="el" href="stl__extensions_8h_source.html#l00233">mrpt::utils::sprintf_vector()</a>.</p>

</div>
</div>
<a class="anchor" id="ga39a976e64941bfbbcde6969124bdd6c5"></a><!-- doxytag: member="mrpt::utils::sprintf_vector" ref="ga39a976e64941bfbbcde6969124bdd6c5" args="(const char *fmt, const std::vector&lt; T &gt; &amp;V)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1string.html">std::string</a> mrpt::utils::sprintf_vector </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fmt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>V</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generates a string for a vector in the format [A,B,C,...] to std::cout, and the fmt string for <b>each</b> vector element. </p>

<p>Definition at line <a class="el" href="stl__extensions_8h_source.html#l00233">233</a> of file <a class="el" href="stl__extensions_8h_source.html">stl_extensions.h</a>.</p>

<p>References <a class="el" href="namespacemrpt.html#a3a27af794b658df5491e2b7678f8ccb8">mrpt::format()</a>.</p>

<p>Referenced by <a class="el" href="_c_levenberg_marquardt_8h_source.html#l00098">mrpt::math::CLevenbergMarquardtTempl::execute()</a>, and <a class="el" href="stl__extensions_8h_source.html#l00262">mrpt::utils::printf_vector()</a>.</p>

</div>
</div>
<a class="anchor" id="gad16f1beaaa537e76df642cfec8e59399"></a><!-- doxytag: member="mrpt::utils::sprintf_vector" ref="gad16f1beaaa537e76df642cfec8e59399" args="(const char *fmt, const Eigen::MatrixBase&lt; Derived &gt; &amp;V)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Derived &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1string.html">std::string</a> mrpt::utils::sprintf_vector </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fmt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_eigen_1_1_matrix_base.html">Eigen::MatrixBase</a>&lt; Derived &gt; &amp;&#160;</td>
          <td class="paramname"><em>V</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>

<p>Definition at line <a class="el" href="stl__extensions_8h_source.html#l00247">247</a> of file <a class="el" href="stl__extensions_8h_source.html">stl_extensions.h</a>.</p>

<p>References <a class="el" href="namespacemrpt.html#a3a27af794b658df5491e2b7678f8ccb8">mrpt::format()</a>.</p>

</div>
</div>
<a class="anchor" id="ga312b016e67b4b7c0438fd9523d83d447"></a><!-- doxytag: member="mrpt::utils::metaprogramming::wrapMember" ref="ga312b016e67b4b7c0438fd9523d83d447" args="(V &amp;obj, T(V::*fun)(U1, U2))" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T , typename U1 , typename U2 , typename V &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">BinaryMemberFunctionWrapper&lt;T,U1,U2,V&gt; mrpt::utils::metaprogramming::wrapMember </td>
          <td>(</td>
          <td class="paramtype">V &amp;&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T(V::*)(U1, U2)&#160;</td>
          <td class="paramname"><em>fun</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This function creates a function from an object and a member function. </p>
<p>It has three overloads, for zero, one and two parameters in the function. </p>

<p>Definition at line <a class="el" href="metaprogramming_8h_source.html#l00330">330</a> of file <a class="el" href="metaprogramming_8h_source.html">metaprogramming.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga15235972fd7c18534c13c3eb0b371024"></a><!-- doxytag: member="mrpt::utils::metaprogramming::wrapMember" ref="ga15235972fd7c18534c13c3eb0b371024" args="(V &amp;obj, T(V::*fun)(U))" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T , typename U , typename V &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">UnaryMemberFunctionWrapper&lt;T,U,V&gt; mrpt::utils::metaprogramming::wrapMember </td>
          <td>(</td>
          <td class="paramtype">V &amp;&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T(V::*)(U)&#160;</td>
          <td class="paramname"><em>fun</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="metaprogramming_8h_source.html#l00333">333</a> of file <a class="el" href="metaprogramming_8h_source.html">metaprogramming.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga34f7c25bf9bff668efdf2f33e1d87e51"></a><!-- doxytag: member="mrpt::utils::metaprogramming::wrapMember" ref="ga34f7c25bf9bff668efdf2f33e1d87e51" args="(V &amp;obj, T(V::*fun)(void))" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T , typename V &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">MemberFunctionWrapper&lt;T,V&gt; mrpt::utils::metaprogramming::wrapMember </td>
          <td>(</td>
          <td class="paramtype">V &amp;&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T(V::*)(void)&#160;</td>
          <td class="paramname"><em>fun</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="metaprogramming_8h_source.html#l00336">336</a> of file <a class="el" href="metaprogramming_8h_source.html">metaprogramming.h</a>.</p>

</div>
</div>
</div>
<br><hr><br> <table border="0" width="100%"> <tr> <td> Page generated by <a href="http://www.doxygen.org" target="_blank">Doxygen 1.7.5</a> for MRPT 0.9.5 SVN: at Sun Sep 25 17:20:18 UTC 2011</td><td></td> <td width="100"> </td> <td width="150">  </td></tr> </table>  </body></html>