<!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> > <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 Page</span></a></li> <li><a href="pages.html"><span>Related 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> | <a href="#namespaces">Namespaces</a> | <a href="#define-members">Defines</a> | <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   " 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  </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"> </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<KEY,VALUE> 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  </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"> </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  </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"> </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  </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"> </td><td class="mdescRight">A STL-like container which looks and behaves (almost exactly) like a std::map<> but is implemented as a linear std::vector<> 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  </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"> </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  </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"> </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_clear.html#details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct  </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"> </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  </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"> </td><td class="mdescRight">An object for clearing an object->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  </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"> </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  </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"> </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  </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"> </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  </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"> </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  </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"> </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  </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"> </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  </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"> </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  </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"> </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  </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"> </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  </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"> </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  </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"> </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  </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"> </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  </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"> </td><td class="mdescRight">A case-insensitive comparator struct for usage within STL containers, eg: map<string,string,ci_less> <a href="structmrpt_1_1utils_1_1ci__less.html#details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct  </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"> </td><td class="mdescRight">Traits for using a std::map<> (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  </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"> </td><td class="mdescRight">Traits for using a mrpt::utils::map_as_vector<> (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  </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"> </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 </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 </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<typename T > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#gadaaa552aaf3cf45f086333c0b3aa07f4">mrpt::utils::metaprogramming::DeleteContainer</a> (T &container)</td></tr> <tr><td class="mdescLeft"> </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<typename it_src , typename it_dst > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </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"> </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<typename src_container , typename dst_container > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </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 &src, dst_container &trg)</td></tr> <tr><td class="mdescLeft"> </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<typename U , typename T > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">MemoryBypasserIterator< T, U > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga8e4c960e8ea93586b181c7ce63f2d0f5">mrpt::utils::metaprogramming::bypassPointer</a> (const T &baseIterator)</td></tr> <tr><td class="mdescLeft"> </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<typename T , typename U1 , typename U2 , typename V > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">BinaryMemberFunctionWrapper< T, <br class="typebreak"/> U1, U2, V > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga312b016e67b4b7c0438fd9523d83d447">mrpt::utils::metaprogramming::wrapMember</a> (V &obj, T(V::*fun)(U1, U2))</td></tr> <tr><td class="mdescLeft"> </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<typename T , typename U , typename V > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">UnaryMemberFunctionWrapper< T, <br class="typebreak"/> U, V > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga15235972fd7c18534c13c3eb0b371024">mrpt::utils::metaprogramming::wrapMember</a> (V &obj, T(V::*fun)(U))</td></tr> <tr><td class="memTemplParams" colspan="2">template<typename T , typename V > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">MemberFunctionWrapper< T, V > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga34f7c25bf9bff668efdf2f33e1d87e51">mrpt::utils::metaprogramming::wrapMember</a> (V &obj, T(V::*fun)(void))</td></tr> <tr><td class="memTemplParams" colspan="2">template<typename Op > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">NonConstBind1st< Op > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga117bd381b8f0b2f9216d0c2f78bbe843">mrpt::utils::metaprogramming::nonConstBind1st</a> (Op &o, typename Op::first_argument_type &t)</td></tr> <tr><td class="mdescLeft"> </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<typename Op > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">NonConstBind2nd< Op > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga3adb0c601312a6404a50ae746526fac4">mrpt::utils::metaprogramming::nonConstBind2nd</a> (Op &o, typename Op::second_argument_type &t)</td></tr> <tr><td class="mdescLeft"> </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"> </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"> </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<class T1 , class T2 > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">CStream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga13c0c64816a187c4198996ab8ce022b6">mrpt::utils::operator>></a> (CStream &in, std::pair< T1, T2 > &obj)</td></tr> <tr><td class="mdescLeft"> </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<class T , class CONTAINER > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">size_t </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__stlext__grp.html#ga0683c85522dd9009f2c2801c18e12eae">mrpt::utils::find_in_vector</a> (const T &value, const CONTAINER &vect)</td></tr> <tr><td class="mdescLeft"> </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<class T > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1list.html">std::list</a>< T >::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> </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>< T > &cont, typename <a class="el" href="classstd_1_1list.html">std::list</a>< T >::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> &it)</td></tr> <tr><td class="mdescLeft"> </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<class K , class V > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1map.html">std::map</a>< K, V >::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> </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>< K, V > &cont, typename <a class="el" href="classstd_1_1map.html">std::map</a>< K, V >::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> &it)</td></tr> <tr><td class="memTemplParams" colspan="2">template<class K , class V > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1multimap.html">std::multimap</a>< K, V >::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> </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>< K, V > &cont, typename <a class="el" href="classstd_1_1multimap.html">std::multimap</a>< K, V >::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> &it)</td></tr> <tr><td class="memTemplParams" colspan="2">template<class T > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1set.html">std::set</a>< T >::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> </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>< T > &cont, typename <a class="el" href="classstd_1_1set.html">std::set</a>< T >::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> &it)</td></tr> <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1string.html">std::string</a> </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>< T > &V)</td></tr> <tr><td class="mdescLeft"> </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<typename Derived > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1string.html">std::string</a> </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>< Derived > &V)</td></tr> <tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr> <tr><td class="memTemplItemLeft" align="right" valign="top">void </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>< T > &V)</td></tr> <tr><td class="mdescLeft"> </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"> </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"> </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 <class T,class _Ax> \ CStream& operator << (CStream& out, const CONTAINER<T,_Ax> &obj) \ { \ out << string(#CONTAINER) << TTypeName<T>::get(); \ out << static_cast<uint32_t>(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>(&out) ); \ return out; \ } \<span class="comment"></span> <span class="comment"> /** Template method to deserialize a sequential STL container */</span> \ template <class T,class _Ax> \ CStream& <a class="code" href="namespacemrpt_1_1math.html#ab55e39255f4b544e7693867d22a70b91">operator >> </a>(<a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449">CStream</a>& in, CONTAINER<T,_Ax> &obj) \ { \ obj.clear(); \ string pref,stored_T; \ in >> 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>("Error: serialized container %s<%s>'s preambles is wrong: '%s'",<span class="preprocessor">#CONTAINER,TTypeName<T>::get().c_str(),pref.c_str() )) \</span> <span class="preprocessor"> in >> stored_T; \</span> <span class="preprocessor"> if (stored_T != TTypeName<T>::get() ) THROW_EXCEPTION(format("Error: serialized container %s< %s != %s >",#CONTAINER,stored_T.c_str(),TTypeName<T>::get().c_str() )) \</span> <span class="preprocessor"> uint32_t n; \</span> <span class="preprocessor"> in >> n; \</span> <span class="preprocessor"> obj.resize(n); \</span> <span class="preprocessor"> for_each( obj.begin(), obj.end(), ObjectReadFromStream(&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 &baseIterator)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename U , typename T > </div> <table class="memname"> <tr> <td class="memname">MemoryBypasserIterator<T,U> mrpt::utils::metaprogramming::bypassPointer </td> <td>(</td> <td class="paramtype">const T & </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<double *> vec; void modifyVal(double &v); The following sentence is not legal: for_each(vec.begin(),vec.end(),&modifyVal) But this one is: for_each(bypassPointer(vec.begin()),bypassPointer(vec.end()),&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 &src, dst_container &trg)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename src_container , typename dst_container > </div> <table class="memname"> <tr> <td class="memname">void mrpt::utils::metaprogramming::copy_container_typecasting </td> <td>(</td> <td class="paramtype">const src_container & </td> <td class="paramname"><em>src</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">dst_container & </td> <td class="paramname"><em>trg</em> </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<int> vi(10); std::vector<float> 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<typename it_src , typename it_dst > </div> <table class="memname"> <tr> <td class="memname">void mrpt::utils::metaprogramming::copy_typecasting </td> <td>(</td> <td class="paramtype">it_src </td> <td class="paramname"><em>first</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">it_src </td> <td class="paramname"><em>last</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">it_dst </td> <td class="paramname"><em>target</em> </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 &container)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T > </div> <table class="memname"> <tr> <td class="memname">void mrpt::utils::metaprogramming::DeleteContainer </td> <td>(</td> <td class="paramtype">T & </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< T > &cont, typename std::list< T >::iterator &it)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T > </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classstd_1_1list.html">std::list</a><T>::<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>< T > & </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>< T >::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> & </td> <td class="paramname"><em>it</em> </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< K, V > &cont, typename std::map< K, V >::iterator &it)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class K , class V > </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classstd_1_1map.html">std::map</a><K,V>::<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>< K, V > & </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>< K, V >::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> & </td> <td class="paramname"><em>it</em> </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< K, V > &cont, typename std::multimap< K, V >::iterator &it)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class K , class V > </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classstd_1_1multimap.html">std::multimap</a><K,V>::<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>< K, V > & </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>< K, V >::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> & </td> <td class="paramname"><em>it</em> </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< T > &cont, typename std::set< T >::iterator &it)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T > </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classstd_1_1set.html">std::set</a><T>::<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>< T > & </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>< T >::<a class="el" href="eigen__plugins_8h.html#a39c5d6430ea9395ae7ae729dd0c3f18c">iterator</a> & </td> <td class="paramname"><em>it</em> </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 &value, const CONTAINER &vect)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T , class CONTAINER > </div> <table class="memname"> <tr> <td class="memname">size_t mrpt::utils::find_in_vector </td> <td>(</td> <td class="paramtype">const T & </td> <td class="paramname"><em>value</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const CONTAINER & </td> <td class="paramname"><em>vect</em> </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< 7, 3, 3, 7 >::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> </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 &o, typename Op::first_argument_type &t)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename Op > </div> <table class="memname"> <tr> <td class="memname">NonConstBind1st<Op> mrpt::utils::metaprogramming::nonConstBind1st </td> <td>(</td> <td class="paramtype">Op & </td> <td class="paramname"><em>o</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">typename Op::first_argument_type & </td> <td class="paramname"><em>t</em> </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 &o, typename Op::second_argument_type &t)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename Op > </div> <table class="memname"> <tr> <td class="memname">NonConstBind2nd<Op> mrpt::utils::metaprogramming::nonConstBind2nd </td> <td>(</td> <td class="paramtype">Op & </td> <td class="paramname"><em>o</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">typename Op::second_argument_type & </td> <td class="paramname"><em>t</em> </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>>" ref="ga13c0c64816a187c4198996ab8ce022b6" args="(CStream &in, std::pair< T1, T2 > &obj)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T1 , class T2 > </div> <table class="memname"> <tr> <td class="memname">CStream& mrpt::utils::operator>> </td> <td>(</td> <td class="paramtype">CStream & </td> <td class="paramname"><em>in</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">std::pair< T1, T2 > & </td> <td class="paramname"><em>obj</em> </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< T > &V)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T > </div> <table class="memname"> <tr> <td class="memname">void mrpt::utils::printf_vector </td> <td>(</td> <td class="paramtype">const char * </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>< T > & </td> <td class="paramname"><em>V</em> </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< T > &V)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T > </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 * </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>< T > & </td> <td class="paramname"><em>V</em> </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< Derived > &V)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename Derived > </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 * </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>< Derived > & </td> <td class="paramname"><em>V</em> </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 &obj, T(V::*fun)(U1, U2))" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T , typename U1 , typename U2 , typename V > </div> <table class="memname"> <tr> <td class="memname">BinaryMemberFunctionWrapper<T,U1,U2,V> mrpt::utils::metaprogramming::wrapMember </td> <td>(</td> <td class="paramtype">V & </td> <td class="paramname"><em>obj</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">T(V::*)(U1, U2) </td> <td class="paramname"><em>fun</em> </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 &obj, T(V::*fun)(U))" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T , typename U , typename V > </div> <table class="memname"> <tr> <td class="memname">UnaryMemberFunctionWrapper<T,U,V> mrpt::utils::metaprogramming::wrapMember </td> <td>(</td> <td class="paramtype">V & </td> <td class="paramname"><em>obj</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">T(V::*)(U) </td> <td class="paramname"><em>fun</em> </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 &obj, T(V::*fun)(void))" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T , typename V > </div> <table class="memname"> <tr> <td class="memname">MemberFunctionWrapper<T,V> mrpt::utils::metaprogramming::wrapMember </td> <td>(</td> <td class="paramtype">V & </td> <td class="paramname"><em>obj</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">T(V::*)(void) </td> <td class="paramname"><em>fun</em> </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>