<!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>matrix_adaptors.h Source File</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 class="current"><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 id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>File Members</span></a></li> </ul> </div> <div class="header"> <div class="headertitle"> <div class="title">matrix_adaptors.h</div> </div> </div> <div class="contents"> <a href="matrix__adaptors_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* +---------------------------------------------------------------------------+</span> <a name="l00002"></a>00002 <span class="comment"> | The Mobile Robot Programming Toolkit (MRPT) C++ library |</span> <a name="l00003"></a>00003 <span class="comment"> | |</span> <a name="l00004"></a>00004 <span class="comment"> | http://www.mrpt.org/ |</span> <a name="l00005"></a>00005 <span class="comment"> | |</span> <a name="l00006"></a>00006 <span class="comment"> | Copyright (C) 2005-2011 University of Malaga |</span> <a name="l00007"></a>00007 <span class="comment"> | |</span> <a name="l00008"></a>00008 <span class="comment"> | This software was written by the Machine Perception and Intelligent |</span> <a name="l00009"></a>00009 <span class="comment"> | Robotics Lab, University of Malaga (Spain). |</span> <a name="l00010"></a>00010 <span class="comment"> | Contact: Jose-Luis Blanco <jlblanco@ctima.uma.es> |</span> <a name="l00011"></a>00011 <span class="comment"> | |</span> <a name="l00012"></a>00012 <span class="comment"> | This file is part of the MRPT project. |</span> <a name="l00013"></a>00013 <span class="comment"> | |</span> <a name="l00014"></a>00014 <span class="comment"> | MRPT is free software: you can redistribute it and/or modify |</span> <a name="l00015"></a>00015 <span class="comment"> | it under the terms of the GNU General Public License as published by |</span> <a name="l00016"></a>00016 <span class="comment"> | the Free Software Foundation, either version 3 of the License, or |</span> <a name="l00017"></a>00017 <span class="comment"> | (at your option) any later version. |</span> <a name="l00018"></a>00018 <span class="comment"> | |</span> <a name="l00019"></a>00019 <span class="comment"> | MRPT is distributed in the hope that it will be useful, |</span> <a name="l00020"></a>00020 <span class="comment"> | but WITHOUT ANY WARRANTY; without even the implied warranty of |</span> <a name="l00021"></a>00021 <span class="comment"> | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |</span> <a name="l00022"></a>00022 <span class="comment"> | GNU General Public License for more details. |</span> <a name="l00023"></a>00023 <span class="comment"> | |</span> <a name="l00024"></a>00024 <span class="comment"> | You should have received a copy of the GNU General Public License |</span> <a name="l00025"></a>00025 <span class="comment"> | along with MRPT. If not, see <http://www.gnu.org/licenses/>. |</span> <a name="l00026"></a>00026 <span class="comment"> | |</span> <a name="l00027"></a>00027 <span class="comment"> +---------------------------------------------------------------------------+ */</span> <a name="l00028"></a>00028 <span class="preprocessor">#ifndef mrpt_matrix_adaptors_H</span> <a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define mrpt_matrix_adaptors_H</span> <a name="l00030"></a>00030 <span class="preprocessor"></span> <a name="l00031"></a>00031 <span class="preprocessor">#include <<a class="code" href="utils__defs_8h.html">mrpt/utils/utils_defs.h</a>></span> <a name="l00032"></a>00032 <span class="preprocessor">#include <<a class="code" href="math__frwds_8h.html">mrpt/math/math_frwds.h</a>></span> <span class="comment">// Fordward declarations</span> <a name="l00033"></a>00033 <a name="l00034"></a>00034 <span class="keyword">namespace </span>mrpt <a name="l00035"></a>00035 { <a name="l00036"></a>00036 <span class="keyword">namespace </span>math <a name="l00037"></a>00037 { <a name="l00038"></a>00038 <span class="comment"></span> <a name="l00039"></a>00039 <span class="comment"> /** Internal classes not to be directly used by the user. */</span> <a name="l00040"></a>00040 <span class="comment">// Forward declarations:</span> <a name="l00041"></a>00041 <span class="keyword">template</span><<span class="keyword">typename</span> T,<span class="keyword">typename</span> U,<span class="keywordtype">bool</span> UIsObject> <span class="keyword">class </span>CBinaryRelation; <a name="l00042"></a>00042 <span class="keyword">namespace </span>detail <a name="l00043"></a>00043 {<span class="comment"></span> <a name="l00044"></a>00044 <span class="comment"> /**</span> <a name="l00045"></a>00045 <span class="comment"> * This template is a trick to switch the type of a variable using a boolean variable in the template. It's easy to extend its functionality to several</span> <a name="l00046"></a>00046 <span class="comment"> * types, using a unsigned char instead of a bool.</span> <a name="l00047"></a>00047 <span class="comment"> */</span> <a name="l00048"></a>00048 <span class="keyword">template</span><<span class="keyword">typename</span> U,<span class="keywordtype">bool</span> B> <span class="keyword">class </span>MatrixWrapper; <a name="l00049"></a>00049 <a name="l00050"></a>00050 <span class="comment">// partial specializations:</span> <a name="l00051"></a>00051 <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">class </span>MatrixWrapper<U,true> { <a name="l00052"></a>00052 <span class="keyword">public</span>: <a name="l00053"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_matrix_wrapper_3_01_u_00_01true_01_4.html#a25f658d5bc406addad831ce2d8563633">00053</a> <span class="keyword">typedef</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_template_objects.html" title="This template class extends the class "CMatrixTemplate" for storing "objects" at each matrix entry...">CMatrixTemplateObjects<U></a> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_matrix_wrapper_3_01_u_00_01true_01_4.html#a25f658d5bc406addad831ce2d8563633">MatrixType</a>; <a name="l00054"></a>00054 }; <a name="l00055"></a>00055 <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">class </span>MatrixWrapper<U,false> { <a name="l00056"></a>00056 <span class="keyword">public</span>: <a name="l00057"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_matrix_wrapper_3_01_u_00_01false_01_4.html#a2b57fbb6c91a7d0b25c320911db0533a">00057</a> <span class="keyword">typedef</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_template.html" title="This template class provides the basic functionality for a general 2D any-size, resizable container o...">CMatrixTemplate<U></a> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_matrix_wrapper_3_01_u_00_01false_01_4.html#a2b57fbb6c91a7d0b25c320911db0533a">MatrixType</a>; <a name="l00058"></a>00058 }; <a name="l00059"></a>00059 <a name="l00060"></a>00060 <span class="keyword">template</span><<span class="keyword">typename</span> T,<span class="keyword">typename</span> U,<span class="keywordtype">bool</span> UIsObject,<span class="keyword">typename</span> FunctionType> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacemrpt_1_1math_1_1detail.html#ac3ef448f76fc9232d29d4d02e3fd2f64">applyFunction</a>(<a class="code" href="classmrpt_1_1math_1_1_c_binary_relation.html" title="This class models a binary relation through the elements of any given set.">CBinaryRelation<T,U,UIsObject></a> &o, FunctionType fun,<span class="keywordtype">size_t</span> e1,<span class="keywordtype">size_t</span> e2,<span class="keyword">const</span> T &T1,<span class="keyword">const</span> T &T2); <a name="l00061"></a>00061 } <a name="l00062"></a>00062 <a name="l00063"></a>00063 <a name="l00064"></a>00064 <span class="keyword">namespace </span>detail {<span class="comment"></span> <a name="l00065"></a>00065 <span class="comment"> /** Template class for matrix accessor's iterators.</span> <a name="l00066"></a>00066 <span class="comment"> * \sa CMatrixRowAccessor,CMatrixColumnAccessor</span> <a name="l00067"></a>00067 <span class="comment"> */</span> <a name="l00068"></a>00068 <span class="keyword">template</span><<span class="keyword">typename</span> A,<span class="keyword">typename</span> T> <span class="keyword">class </span>AccessorIterator { <a name="l00069"></a>00069 <span class="keyword">protected</span>: <a name="l00070"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a78013cd73c6885181fe8c4184f326073">00070</a> A *<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a78013cd73c6885181fe8c4184f326073">base</a>; <a name="l00071"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a1d218b8a5294a508268a136171ce8670">00071</a> <span class="keywordtype">int</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a1d218b8a5294a508268a136171ce8670">pos</a>; <a name="l00072"></a>00072 <span class="keyword">public</span>: <a name="l00073"></a>00073 <span class="comment">//typedefs for iterator_traits:</span> <a name="l00074"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#aa2f69834dc58090f514acb7e978414a9">00074</a> <span class="keyword">typedef</span> std::random_access_iterator_tag <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#aa2f69834dc58090f514acb7e978414a9">iterator_category</a>; <a name="l00075"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a2cefad242bba89d3c7716778905f4d4e">00075</a> <span class="keyword">typedef</span> T <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a2cefad242bba89d3c7716778905f4d4e">value_type</a>; <a name="l00076"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#ae56ec5c4d0b86dea9492ce1d671b2a35">00076</a> <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#ae56ec5c4d0b86dea9492ce1d671b2a35">difference_type</a>; <a name="l00077"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a79a2bc425c6513a9feb2f701708b1480">00077</a> <span class="keyword">typedef</span> T *<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a79a2bc425c6513a9feb2f701708b1480">pointer</a>; <a name="l00078"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#ae97822542f4be598a31c21ce1ed2628e">00078</a> <span class="keyword">typedef</span> T &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#ae97822542f4be598a31c21ce1ed2628e">reference</a>; <a name="l00079"></a>00079 <a name="l00080"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a4a09af779fd86f3693f6f0a4139b8264">00080</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a4a09af779fd86f3693f6f0a4139b8264">AccessorIterator</a>(A &obj,<span class="keywordtype">size_t</span> N):<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a78013cd73c6885181fe8c4184f326073">base</a>(&obj),<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a1d218b8a5294a508268a136171ce8670">pos</a>(N) {} <a name="l00081"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a038d9f4aa7730f9da03507b747d9c86e">00081</a> <span class="keyword">inline</span> T &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a038d9f4aa7730f9da03507b747d9c86e">operator*</a>()<span class="keyword"> const </span>{ <a name="l00082"></a>00082 <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a78013cd73c6885181fe8c4184f326073">base</a>)[<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a1d218b8a5294a508268a136171ce8670">pos</a>]; <a name="l00083"></a>00083 } <a name="l00084"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a2503e7f0d13e61bf3628417edb2e51fe">00084</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a2503e7f0d13e61bf3628417edb2e51fe">operator++</a>() { <a name="l00085"></a>00085 ++<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a1d218b8a5294a508268a136171ce8670">pos</a>; <a name="l00086"></a>00086 <span class="keywordflow">return</span> *<span class="keyword">this</span>; <a name="l00087"></a>00087 } <a name="l00088"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a7aa5c0e2977f9f0f7dd39170f4828ead">00088</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a7aa5c0e2977f9f0f7dd39170f4828ead">operator++</a>(<span class="keywordtype">int</span>) { <a name="l00089"></a>00089 <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> it=*<span class="keyword">this</span>; <a name="l00090"></a>00090 ++*<span class="keyword">this</span>; <a name="l00091"></a>00091 <span class="keywordflow">return</span> it; <a name="l00092"></a>00092 } <a name="l00093"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#aa55520b0615c59eb0f81bc4670ffff74">00093</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#aa55520b0615c59eb0f81bc4670ffff74">operator--</a>() { <a name="l00094"></a>00094 --<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a1d218b8a5294a508268a136171ce8670">pos</a>; <a name="l00095"></a>00095 <span class="keywordflow">return</span> *<span class="keyword">this</span>; <a name="l00096"></a>00096 } <a name="l00097"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a8d0fc748758cef78c2989a7c4c39ff7a">00097</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a8d0fc748758cef78c2989a7c4c39ff7a">operator--</a>(<span class="keywordtype">int</span>) { <a name="l00098"></a>00098 <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> it=*<span class="keyword">this</span>; <a name="l00099"></a>00099 --*<span class="keyword">this</span>; <a name="l00100"></a>00100 <span class="keywordflow">return</span> it; <a name="l00101"></a>00101 } <a name="l00102"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a34a50ccb43d2a386ec84ac2e23ebc5cb">00102</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a34a50ccb43d2a386ec84ac2e23ebc5cb">operator+=</a>(<span class="keywordtype">int</span> off) { <a name="l00103"></a>00103 <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a1d218b8a5294a508268a136171ce8670">pos</a>+=off; <a name="l00104"></a>00104 <span class="keywordflow">return</span> *<span class="keyword">this</span>; <a name="l00105"></a>00105 } <a name="l00106"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a9ffce3df34312cb8b32da825d8d100bf">00106</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a9ffce3df34312cb8b32da825d8d100bf">operator+</a>(<span class="keywordtype">int</span> off)<span class="keyword"> const </span>{ <a name="l00107"></a>00107 <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> it=*<span class="keyword">this</span>; <a name="l00108"></a>00108 it+=off; <a name="l00109"></a>00109 <span class="keywordflow">return</span> it; <a name="l00110"></a>00110 } <a name="l00111"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#afbc58589ced4064846e459bae3144cfa">00111</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#afbc58589ced4064846e459bae3144cfa">operator-=</a>(<span class="keywordtype">int</span> off) { <a name="l00112"></a>00112 <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a1d218b8a5294a508268a136171ce8670">pos</a>-=off; <a name="l00113"></a>00113 <span class="keywordflow">return</span> *<span class="keyword">this</span>; <a name="l00114"></a>00114 } <a name="l00115"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#ac3e97e845767d076e7814850bc280ec0">00115</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#ac3e97e845767d076e7814850bc280ec0">operator-</a>(<span class="keywordtype">int</span> off)<span class="keyword"> const </span>{ <a name="l00116"></a>00116 <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> it=*<span class="keyword">this</span>; <a name="l00117"></a>00117 it-=off; <a name="l00118"></a>00118 <span class="keywordflow">return</span> it; <a name="l00119"></a>00119 } <a name="l00120"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#ac170d7986d0c2f5c1ff5e59d4cb48953">00120</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#ac170d7986d0c2f5c1ff5e59d4cb48953">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> &it)<span class="keyword"> const </span>{ <a name="l00121"></a>00121 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a1d218b8a5294a508268a136171ce8670">pos</a>-it.pos; <a name="l00122"></a>00122 } <a name="l00123"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#affe46128f5dce650d2958266834467da">00123</a> <span class="keyword">inline</span> T &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#affe46128f5dce650d2958266834467da">operator[]</a>(<span class="keywordtype">int</span> off)<span class="keyword"> const </span>{ <a name="l00124"></a>00124 <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a78013cd73c6885181fe8c4184f326073">base</a>)[<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a1d218b8a5294a508268a136171ce8670">pos</a>+off]; <a name="l00125"></a>00125 } <a name="l00126"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a0111efcb1df8075bbebc8a74f0be15e8">00126</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a0111efcb1df8075bbebc8a74f0be15e8">operator==</a>(<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> &it)<span class="keyword"> const </span>{ <a name="l00127"></a>00127 <span class="keywordflow">return</span> (<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a1d218b8a5294a508268a136171ce8670">pos</a>==it.pos)&&(<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a78013cd73c6885181fe8c4184f326073">base</a>==it.base); <a name="l00128"></a>00128 } <a name="l00129"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#afa510ec95e14b656ae87966209b15cf1">00129</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#afa510ec95e14b656ae87966209b15cf1">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> &it)<span class="keyword"> const </span>{ <a name="l00130"></a>00130 <span class="keywordflow">return</span> !(<a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html#a0111efcb1df8075bbebc8a74f0be15e8">operator==</a>(it)); <a name="l00131"></a>00131 } <a name="l00132"></a>00132 }; <a name="l00133"></a>00133 <span class="comment"></span> <a name="l00134"></a>00134 <span class="comment"> /** Template class for matrix accessor's iterators.</span> <a name="l00135"></a>00135 <span class="comment"> * \sa CMatrixRowAccessor,CMatrixColumnAccessor</span> <a name="l00136"></a>00136 <span class="comment"> */</span> <a name="l00137"></a>00137 <span class="keyword">template</span><<span class="keyword">typename</span> A,<span class="keyword">typename</span> T> <span class="keyword">class </span>ReverseAccessorIterator { <a name="l00138"></a>00138 <span class="keyword">protected</span>: <a name="l00139"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a78fd29cf073fb69613646628ae8cdfa7">00139</a> A *<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a78fd29cf073fb69613646628ae8cdfa7">base</a>; <a name="l00140"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a26761a7036a2b9f91e71ec31374600a5">00140</a> <span class="keywordtype">int</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a26761a7036a2b9f91e71ec31374600a5">pos</a>; <a name="l00141"></a>00141 <span class="keyword">public</span>: <a name="l00142"></a>00142 <span class="comment">//typedefs for iterator_traits:</span> <a name="l00143"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a8d3cc09e70daf78e84a78552caed8ed9">00143</a> <span class="keyword">typedef</span> std::random_access_iterator_tag <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a8d3cc09e70daf78e84a78552caed8ed9">iterator_category</a>; <a name="l00144"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#adae54e29ba6bc46ff6988608086490a6">00144</a> <span class="keyword">typedef</span> T <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#adae54e29ba6bc46ff6988608086490a6">value_type</a>; <a name="l00145"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a6cc99a9ac968191271a85b0dee0e58c8">00145</a> <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a6cc99a9ac968191271a85b0dee0e58c8">difference_type</a>; <a name="l00146"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a61c17e694ec0080858192afb8111fa22">00146</a> <span class="keyword">typedef</span> T *<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a61c17e694ec0080858192afb8111fa22">pointer</a>; <a name="l00147"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a9f60b697afb619f90310893317a5bac2">00147</a> <span class="keyword">typedef</span> T &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a9f60b697afb619f90310893317a5bac2">reference</a>; <a name="l00148"></a>00148 <a name="l00149"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a55ea5f5a817d46b27b41b85b3f73af87">00149</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a55ea5f5a817d46b27b41b85b3f73af87">ReverseAccessorIterator</a>(A &obj,<span class="keywordtype">size_t</span> N):<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a78fd29cf073fb69613646628ae8cdfa7">base</a>(&obj),<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a26761a7036a2b9f91e71ec31374600a5">pos</a>(N) {} <a name="l00150"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#ab98b98bf544233a19b13dbaf800dd276">00150</a> <span class="keyword">inline</span> T &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#ab98b98bf544233a19b13dbaf800dd276">operator*</a>()<span class="keyword"> const </span>{ <a name="l00151"></a>00151 <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a78fd29cf073fb69613646628ae8cdfa7">base</a>)[<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a26761a7036a2b9f91e71ec31374600a5">pos</a>]; <a name="l00152"></a>00152 } <a name="l00153"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a16d7b14946951334b4176da4b45a54e7">00153</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a16d7b14946951334b4176da4b45a54e7">operator++</a>() { <a name="l00154"></a>00154 --<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a26761a7036a2b9f91e71ec31374600a5">pos</a>; <a name="l00155"></a>00155 <span class="keywordflow">return</span> *<span class="keyword">this</span>; <a name="l00156"></a>00156 } <a name="l00157"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a722acf6494161cc0deab063ada27e7ef">00157</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a722acf6494161cc0deab063ada27e7ef">operator++</a>(<span class="keywordtype">int</span>) { <a name="l00158"></a>00158 <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> it=*<span class="keyword">this</span>; <a name="l00159"></a>00159 ++*<span class="keyword">this</span>; <span class="comment">//Yes, that's right.</span> <a name="l00160"></a>00160 <span class="keywordflow">return</span> it; <a name="l00161"></a>00161 } <a name="l00162"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a4d3a141c8c007a590f69a37a37ab64dd">00162</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a4d3a141c8c007a590f69a37a37ab64dd">operator--</a>() { <a name="l00163"></a>00163 ++<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a26761a7036a2b9f91e71ec31374600a5">pos</a>; <a name="l00164"></a>00164 <span class="keywordflow">return</span> *<span class="keyword">this</span>; <a name="l00165"></a>00165 } <a name="l00166"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a15a31216744ea4a5f8a4f77d594ff45c">00166</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a15a31216744ea4a5f8a4f77d594ff45c">operator--</a>(<span class="keywordtype">int</span>) { <a name="l00167"></a>00167 <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> it=*<span class="keyword">this</span>; <a name="l00168"></a>00168 --*<span class="keyword">this</span>; <span class="comment">//Yes, that's right.</span> <a name="l00169"></a>00169 <span class="keywordflow">return</span> it; <a name="l00170"></a>00170 } <a name="l00171"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a4f39590eaa2cad3572af330958238799">00171</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a4f39590eaa2cad3572af330958238799">operator+=</a>(<span class="keywordtype">int</span> off) { <a name="l00172"></a>00172 <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a26761a7036a2b9f91e71ec31374600a5">pos</a>-=off; <a name="l00173"></a>00173 <span class="keywordflow">return</span> *<span class="keyword">this</span>; <a name="l00174"></a>00174 } <a name="l00175"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a2e93b64f6316498b811f125323ef046b">00175</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a2e93b64f6316498b811f125323ef046b">operator+</a>(<span class="keywordtype">int</span> off)<span class="keyword"> const </span>{ <a name="l00176"></a>00176 <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> it=*<span class="keyword">this</span>; <a name="l00177"></a>00177 it+=off; <span class="comment">//Yes, that's right.</span> <a name="l00178"></a>00178 <span class="keywordflow">return</span> it; <a name="l00179"></a>00179 } <a name="l00180"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a66a96a4a350e6978ccacac0d92f07f84">00180</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a66a96a4a350e6978ccacac0d92f07f84">operator-=</a>(<span class="keywordtype">int</span> off) { <a name="l00181"></a>00181 <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a26761a7036a2b9f91e71ec31374600a5">pos</a>+=off; <a name="l00182"></a>00182 <span class="keywordflow">return</span> *<span class="keyword">this</span>; <a name="l00183"></a>00183 } <a name="l00184"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a289b3a250c0ee37d79a3696fa00ca8cf">00184</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">AccessorIterator<A,T></a> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a289b3a250c0ee37d79a3696fa00ca8cf">operator-</a>(<span class="keywordtype">int</span> off)<span class="keyword"> const </span>{ <a name="l00185"></a>00185 <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> it=*<span class="keyword">this</span>; <a name="l00186"></a>00186 it-=off; <span class="comment">//Yes, that's right</span> <a name="l00187"></a>00187 <span class="keywordflow">return</span> it; <a name="l00188"></a>00188 } <a name="l00189"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a7a792b943d03df66e0127e452e1c4771">00189</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a7a792b943d03df66e0127e452e1c4771">operator-</a>(<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> &it)<span class="keyword"> const </span>{ <a name="l00190"></a>00190 <span class="keywordflow">return</span> it.pos-<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a26761a7036a2b9f91e71ec31374600a5">pos</a>; <a name="l00191"></a>00191 } <a name="l00192"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a35d88ee7b89b4eebb905152e1c56e2d4">00192</a> <span class="keyword">inline</span> T &<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a35d88ee7b89b4eebb905152e1c56e2d4">operator[]</a>(<span class="keywordtype">int</span> off)<span class="keyword"> const </span>{ <a name="l00193"></a>00193 <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a78fd29cf073fb69613646628ae8cdfa7">base</a>)[<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a26761a7036a2b9f91e71ec31374600a5">pos</a>-off]; <a name="l00194"></a>00194 } <a name="l00195"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a31edf82fc28f7d013ee0cfa0c4301da9">00195</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a31edf82fc28f7d013ee0cfa0c4301da9">operator==</a>(<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> &it)<span class="keyword"> const </span>{ <a name="l00196"></a>00196 <span class="keywordflow">return</span> (<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a26761a7036a2b9f91e71ec31374600a5">pos</a>==it.pos)&&(&<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a78fd29cf073fb69613646628ae8cdfa7">base</a>==&it.base); <a name="l00197"></a>00197 } <a name="l00198"></a><a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#ab55081bca629ad5729cfbc0cffd2f219">00198</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#ab55081bca629ad5729cfbc0cffd2f219">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">ReverseAccessorIterator<A,T></a> &it)<span class="keyword"> const </span>{ <a name="l00199"></a>00199 <span class="keywordflow">return</span> !(<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a31edf82fc28f7d013ee0cfa0c4301da9">operator==</a>(it)); <a name="l00200"></a>00200 } <a name="l00201"></a>00201 }; <a name="l00202"></a>00202 } <span class="comment">//End of detail namespace</span> <a name="l00203"></a>00203 <a name="l00204"></a>00204 <span class="comment"></span> <a name="l00205"></a>00205 <span class="comment"> /** A vector-like wrapper for a Matrix for accessing the elements of a given row with a [] operator.</span> <a name="l00206"></a>00206 <span class="comment"> * For usage with MRPT's CMatrixTemplate only (for MRPT numeric matrices, use Eigen methods)</span> <a name="l00207"></a>00207 <span class="comment"> * \sa CMatrixColumnAccessor,CMatrixRowAccessorExtended,CConstMatrixRowAccessor,CConstMatrixRowAccessorExtended</span> <a name="l00208"></a>00208 <span class="comment"> */</span> <a name="l00209"></a>00209 <span class="keyword">template</span> <<span class="keyword">typename</span> MAT> <a name="l00210"></a>00210 <span class="keyword">class </span>CMatrixRowAccessor <a name="l00211"></a>00211 { <a name="l00212"></a>00212 <span class="keyword">protected</span>: <a name="l00213"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">00213</a> MAT *<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>; <a name="l00214"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a326fcb3f5f89eefb649ec6c043c68f98">00214</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a326fcb3f5f89eefb649ec6c043c68f98">m_rowInd</a>; <a name="l00215"></a>00215 <span class="keyword">public</span>: <a name="l00216"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">00216</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MAT<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">::value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">value_type</a>; <a name="l00217"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a9db09b078bffdf1a3798f16c75ac586f">00217</a> <span class="keyword">typedef</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given row with a [] operator...">CMatrixRowAccessor<MAT></a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a9db09b078bffdf1a3798f16c75ac586f">mrpt_autotype</a>; <a name="l00218"></a>00218 <span class="comment">//DECLARE_MRPT_CONTAINER_TYPES</span> <a name="l00219"></a>00219 <span class="comment">//DECLARE_MRPT_CONTAINER_IS_VECTOR</span> <a name="l00220"></a>00220 <span class="comment">//DECLARE_COMMON_CONTAINERS_MEMBERS(value_type)</span> <a name="l00221"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#aeb0c49c4a239d89bbff272224e79bae9">00221</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#aeb0c49c4a239d89bbff272224e79bae9">CMatrixRowAccessor</a>(MAT &mat, <span class="keywordtype">size_t</span> rowIdx) : <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>(&mat), <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a326fcb3f5f89eefb649ec6c043c68f98">m_rowInd</a>(rowIdx) { <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(rowIdx<mat.getRowCount()) } <a name="l00222"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ac194685b6d243e48f2f86e7bf2ab54f2">00222</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ac194685b6d243e48f2f86e7bf2ab54f2">CMatrixRowAccessor</a>() {} <a name="l00223"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab49ffb2aae107f364637a3645f799ae9">00223</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">value_type</a> &<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab49ffb2aae107f364637a3645f799ae9">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">size_t</span> i) { <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>)(<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a326fcb3f5f89eefb649ec6c043c68f98">m_rowInd</a>,i); } <a name="l00224"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a0f5886a940c4810a4e731f12556c5ad6">00224</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a0f5886a940c4810a4e731f12556c5ad6">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>)(<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a326fcb3f5f89eefb649ec6c043c68f98">m_rowInd</a>,i); } <a name="l00225"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ae0f8354cae7a123089627432dd0076e5">00225</a> <span class="keyword">typedef</span> detail::AccessorIterator<CMatrixRowAccessor<MAT>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ae0f8354cae7a123089627432dd0076e5">iterator</a>; <a name="l00226"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">00226</a> <span class="keyword">typedef</span> detail::AccessorIterator<const CMatrixRowAccessor<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>; <a name="l00227"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a87c6efdeb4ab6ba28286dde985feb9e4">00227</a> <span class="keyword">typedef</span> detail::ReverseAccessorIterator<CMatrixRowAccessor<MAT>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a87c6efdeb4ab6ba28286dde985feb9e4">reverse_iterator</a>; <a name="l00228"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">00228</a> <span class="keyword">typedef</span> detail::ReverseAccessorIterator<const CMatrixRowAccessor<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>; <a name="l00229"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ad7e66d7f3ed050b7a34dd786cd0c3554">00229</a> <span class="keyword">inline</span> iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ad7e66d7f3ed050b7a34dd786cd0c3554">begin</a>() { <a name="l00230"></a>00230 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ae0f8354cae7a123089627432dd0076e5">iterator</a>(*<span class="keyword">this</span>,0); <a name="l00231"></a>00231 } <a name="l00232"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a3ca2b60377a723fae02559ff5fdde6af">00232</a> <span class="keyword">inline</span> const_iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a3ca2b60377a723fae02559ff5fdde6af">begin</a>()<span class="keyword"> const </span>{ <a name="l00233"></a>00233 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,0); <a name="l00234"></a>00234 } <a name="l00235"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#aef3d3a912eda3e09aa4d80d3c500b16d">00235</a> <span class="keyword">inline</span> iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#aef3d3a912eda3e09aa4d80d3c500b16d">end</a>() { <a name="l00236"></a>00236 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ae0f8354cae7a123089627432dd0076e5">iterator</a>(*<span class="keyword">this</span>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getColCount()); <a name="l00237"></a>00237 } <a name="l00238"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ae0bd3cf318e0ba69aa7529909e9cdd28">00238</a> <span class="keyword">inline</span> const_iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ae0bd3cf318e0ba69aa7529909e9cdd28">end</a>()<span class="keyword"> const </span>{ <a name="l00239"></a>00239 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getColCount()); <a name="l00240"></a>00240 } <a name="l00241"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab6029f91de154f1da47e04f57c4102c9">00241</a> <span class="keyword">inline</span> reverse_iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab6029f91de154f1da47e04f57c4102c9">rbegin</a>() { <a name="l00242"></a>00242 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a87c6efdeb4ab6ba28286dde985feb9e4">reverse_iterator</a>(*<span class="keyword">this</span>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getColCount()-1); <a name="l00243"></a>00243 } <a name="l00244"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a049aa4cdcc3769cdff86423655e1cb59">00244</a> <span class="keyword">inline</span> const_reverse_iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a049aa4cdcc3769cdff86423655e1cb59">rbegin</a>()<span class="keyword"> const </span>{ <a name="l00245"></a>00245 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>.getColCount()-1); <a name="l00246"></a>00246 } <a name="l00247"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a5f2c135c7a1d5a03494a29f480144f8a">00247</a> <span class="keyword">inline</span> reverse_iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a5f2c135c7a1d5a03494a29f480144f8a">rend</a>() { <a name="l00248"></a>00248 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a87c6efdeb4ab6ba28286dde985feb9e4">reverse_iterator</a>(*<span class="keyword">this</span>,-1); <a name="l00249"></a>00249 } <a name="l00250"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#acdb3d5e0bf70162fb4043b354aea9bbc">00250</a> <span class="keyword">inline</span> const_reverse_iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#acdb3d5e0bf70162fb4043b354aea9bbc">rend</a>()<span class="keyword"> const </span>{ <a name="l00251"></a>00251 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,-1); <a name="l00252"></a>00252 } <a name="l00253"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a93d2639ed61a75711d623098efb74744">00253</a> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a93d2639ed61a75711d623098efb74744">size</a>()<span class="keyword"> const </span>{ <a name="l00254"></a>00254 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getColCount(); <a name="l00255"></a>00255 } <a name="l00256"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ad630ee3b419902d2e4ffa58fe60984ad">00256</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ad630ee3b419902d2e4ffa58fe60984ad">resize</a>(<span class="keywordtype">size_t</span> N) { <a name="l00257"></a>00257 <span class="keywordflow">if</span> (N!=<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a93d2639ed61a75711d623098efb74744">size</a>()) <span class="keywordflow">throw</span> <a class="code" href="classstd_1_1logic__error.html" title="STL class.">std::logic_error</a>(<span class="stringliteral">"Tried to resize a fixed-size vector"</span>); <a name="l00258"></a>00258 } <a name="l00259"></a>00259 }; <a name="l00260"></a><a class="code" href="namespacemrpt_1_1math.html#a5ea466ba07ea389dd3bb90326b0ac255">00260</a> <span class="keyword">template</span><<span class="keyword">typename</span> MAT> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given row with a [] operator...">CMatrixRowAccessor<MAT></a> <a class="code" href="namespacemrpt_1_1math.html#a5ea466ba07ea389dd3bb90326b0ac255">getRowAccessor</a>(MAT &m,<span class="keywordtype">size_t</span> rowIdx) { <a name="l00261"></a>00261 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given row with a [] operator...">CMatrixRowAccessor<MAT></a>(m,rowIdx); <a name="l00262"></a>00262 } <a name="l00263"></a>00263 <span class="comment"></span> <a name="l00264"></a>00264 <span class="comment"> /** A vector-like wrapper for a Matrix for accessing the elements of a given row with a [] operator, with offset and custom spacing.</span> <a name="l00265"></a>00265 <span class="comment"> * For usage with MRPT's CMatrixTemplate only (for MRPT numeric matrices, use Eigen methods)</span> <a name="l00266"></a>00266 <span class="comment"> * \sa CMatrixColumnAccessorExtended,CMatrixRowAccessor,CConstMatrixRowAccessor,CConstMatrixRowAccessorExtended</span> <a name="l00267"></a>00267 <span class="comment"> */</span> <a name="l00268"></a>00268 <span class="keyword">template</span><<span class="keyword">class</span> MAT> <a name="l00269"></a>00269 <span class="keyword">class </span>CMatrixRowAccessorExtended { <a name="l00270"></a>00270 <span class="keyword">protected</span>: <a name="l00271"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a4387e1c0a6efbe2e2247a82e4e9784e1">00271</a> MAT *<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a4387e1c0a6efbe2e2247a82e4e9784e1">m_mat</a>; <a name="l00272"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a44a6b8e8ab6dcae7e3773be926f5e96a">00272</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a44a6b8e8ab6dcae7e3773be926f5e96a">m_rowInd</a>; <a name="l00273"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a6d2f452a5489d24929a012401cfd71f2">00273</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a6d2f452a5489d24929a012401cfd71f2">m_colOffset</a>; <a name="l00274"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a0f9b7de7fbd51ad89b3e28ba771d1009">00274</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a0f9b7de7fbd51ad89b3e28ba771d1009">m_elementsSpace</a>; <a name="l00275"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a39b217b2d6bb6b810ea631e47e55cd4d">00275</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a39b217b2d6bb6b810ea631e47e55cd4d">howMany</a>; <a name="l00276"></a>00276 <span class="keyword">public</span>: <a name="l00277"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">00277</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MAT<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">::value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">value_type</a>; <a name="l00278"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#af35f30a58359ba3230c151e2287606f6">00278</a> <span class="keyword">typedef</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given row with a [] operator...">CMatrixRowAccessorExtended<MAT></a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#af35f30a58359ba3230c151e2287606f6">mrpt_autotype</a>; <a name="l00279"></a>00279 <span class="comment">//DECLARE_MRPT_CONTAINER_TYPES</span> <a name="l00280"></a>00280 <span class="comment">//DECLARE_MRPT_CONTAINER_IS_VECTOR</span> <a name="l00281"></a>00281 <span class="comment">//DECLARE_COMMON_CONTAINERS_MEMBERS(value_type)</span> <a name="l00282"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#ad6890822b148127ad0c87a8168d658f7">00282</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#ad6890822b148127ad0c87a8168d658f7">CMatrixRowAccessorExtended</a>(MAT &mat,<span class="keywordtype">size_t</span> row,<span class="keywordtype">size_t</span> offset,<span class="keywordtype">size_t</span> space):<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>(&mat),<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a326fcb3f5f89eefb649ec6c043c68f98">m_rowInd</a>(row),m_colOffset(offset),m_elementsSpace(space) { <a name="l00283"></a>00283 <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(row<mat.getRowCount()); <a name="l00284"></a>00284 howMany=(mat.getColCount()-m_colOffset)/m_elementsSpace; <a name="l00285"></a>00285 } <a name="l00286"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a5010f73ae6ac2fd6c39313eeadf2a31d">00286</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a5010f73ae6ac2fd6c39313eeadf2a31d">CMatrixRowAccessorExtended</a>() {} <a name="l00287"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb21ed6acd5bd019ba4c1081dd29fa06">00287</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">value_type</a> &<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb21ed6acd5bd019ba4c1081dd29fa06">operator[]</a>(<span class="keywordtype">size_t</span> i) { <a name="l00288"></a>00288 <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>)(<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a326fcb3f5f89eefb649ec6c043c68f98">m_rowInd</a>,m_colOffset+(i*m_elementsSpace)); <a name="l00289"></a>00289 } <a name="l00290"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#ab6f924c94b9da415a880a374b53106d7">00290</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#ab6f924c94b9da415a880a374b53106d7">operator[]</a>(<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{ <a name="l00291"></a>00291 <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>)(<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a326fcb3f5f89eefb649ec6c043c68f98">m_rowInd</a>,m_colOffset+(i*m_elementsSpace)); <a name="l00292"></a>00292 } <a name="l00293"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#aab68cf62c72d639d18e68ba7a7481c88">00293</a> <span class="keyword">typedef</span> detail::AccessorIterator<CMatrixRowAccessorExtended<MAT>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#aab68cf62c72d639d18e68ba7a7481c88">iterator</a>; <a name="l00294"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#ae5907f0cbccff74f43f61c7e3cf497ef">00294</a> <span class="keyword">typedef</span> detail::AccessorIterator<const CMatrixRowAccessorExtended<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#ae5907f0cbccff74f43f61c7e3cf497ef">const_iterator</a>; <a name="l00295"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#ab214ee24530336307caf947b934ec11e">00295</a> <span class="keyword">typedef</span> detail::ReverseAccessorIterator<CMatrixRowAccessorExtended<MAT>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#ab214ee24530336307caf947b934ec11e">reverse_iterator</a>; <a name="l00296"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a7d7c16b281ccc25550d37d77b8358783">00296</a> <span class="keyword">typedef</span> detail::ReverseAccessorIterator<const CMatrixRowAccessorExtended<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a7d7c16b281ccc25550d37d77b8358783">const_reverse_iterator</a>; <a name="l00297"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afba607a7562fcaf7095b1053d5cb25e3">00297</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afba607a7562fcaf7095b1053d5cb25e3">begin</a>() { <a name="l00298"></a>00298 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ae0f8354cae7a123089627432dd0076e5">iterator</a>(*<span class="keyword">this</span>,0); <a name="l00299"></a>00299 } <a name="l00300"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a29432d3953511aa1496f936e4da0bcd2">00300</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a29432d3953511aa1496f936e4da0bcd2">begin</a>()<span class="keyword"> const </span>{ <a name="l00301"></a>00301 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,0); <a name="l00302"></a>00302 } <a name="l00303"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#aa6b8c7e3568943828fa452c83201212c">00303</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#aa6b8c7e3568943828fa452c83201212c">end</a>() { <a name="l00304"></a>00304 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ae0f8354cae7a123089627432dd0076e5">iterator</a>(*<span class="keyword">this</span>,howMany); <a name="l00305"></a>00305 } <a name="l00306"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#af0113bab7be10c69c2feecd5780a0a83">00306</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#af0113bab7be10c69c2feecd5780a0a83">end</a>()<span class="keyword"> const </span>{ <a name="l00307"></a>00307 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,howMany); <a name="l00308"></a>00308 } <a name="l00309"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a1714fb0164c90c30038ef0259c811ee8">00309</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a1714fb0164c90c30038ef0259c811ee8">rbegin</a>() { <a name="l00310"></a>00310 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a87c6efdeb4ab6ba28286dde985feb9e4">reverse_iterator</a>(*<span class="keyword">this</span>,howMany-1); <a name="l00311"></a>00311 } <a name="l00312"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a9bd0a9215bd67f883c1818ef742f78a9">00312</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a9bd0a9215bd67f883c1818ef742f78a9">rbegin</a>()<span class="keyword"> const </span>{ <a name="l00313"></a>00313 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,howMany-1); <a name="l00314"></a>00314 } <a name="l00315"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#ab61de077c6a005a8a3eeeab5a4cf3d8c">00315</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#ab61de077c6a005a8a3eeeab5a4cf3d8c">rend</a>() { <a name="l00316"></a>00316 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a87c6efdeb4ab6ba28286dde985feb9e4">reverse_iterator</a>(*<span class="keyword">this</span>,-1); <a name="l00317"></a>00317 } <a name="l00318"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#adc58bcb1be832059b67b7ef91bd7258a">00318</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#adc58bcb1be832059b67b7ef91bd7258a">rend</a>()<span class="keyword"> const </span>{ <a name="l00319"></a>00319 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,-1); <a name="l00320"></a>00320 } <a name="l00321"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#adf4dd101b8019711de2faacf7001be50">00321</a> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#adf4dd101b8019711de2faacf7001be50">size</a>()<span class="keyword"> const </span>{ <a name="l00322"></a>00322 <span class="keywordflow">return</span> howMany; <a name="l00323"></a>00323 } <a name="l00324"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a925ca49d92ec5eaaa772da67ba4c60c0">00324</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#a925ca49d92ec5eaaa772da67ba4c60c0">resize</a>(<span class="keywordtype">size_t</span> N) { <a name="l00325"></a>00325 <span class="keywordflow">if</span> (N!=<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a93d2639ed61a75711d623098efb74744">size</a>()) <span class="keywordflow">throw</span> <a class="code" href="classstd_1_1logic__error.html" title="STL class.">std::logic_error</a>(<span class="stringliteral">"Tried to resize a fixed-size vector"</span>); <a name="l00326"></a>00326 } <a name="l00327"></a>00327 }; <a name="l00328"></a><a class="code" href="namespacemrpt_1_1math.html#ab2fd0fa4b0dd0ccd201421e13d43a187">00328</a> <span class="keyword">template</span><<span class="keyword">typename</span> MAT> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given row with a [] operator...">CMatrixRowAccessorExtended<MAT></a> <a class="code" href="namespacemrpt_1_1math.html#a5ea466ba07ea389dd3bb90326b0ac255">getRowAccessor</a>(MAT &m,<span class="keywordtype">size_t</span> rowIdx,<span class="keywordtype">size_t</span> offset,<span class="keywordtype">size_t</span> space=1) { <a name="l00329"></a>00329 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given row with a [] operator...">CMatrixRowAccessor<MAT></a>(m,rowIdx,offset,space); <a name="l00330"></a>00330 } <a name="l00331"></a>00331 <span class="comment"></span> <a name="l00332"></a>00332 <span class="comment"> /** A vector-like wrapper for a const Matrix for accessing the elements of a given row with a [] operator.</span> <a name="l00333"></a>00333 <span class="comment"> * For usage with MRPT's CMatrixTemplate only (for MRPT numeric matrices, use Eigen methods)</span> <a name="l00334"></a>00334 <span class="comment"> * \sa CConstMatrixColumnAccessor,CMatrixRowAccessorExtended,CMatrixRowAccessor,CConstMatrixRowAccessorExtended</span> <a name="l00335"></a>00335 <span class="comment"> */</span> <a name="l00336"></a>00336 <span class="keyword">template</span><<span class="keyword">class</span> MAT> <a name="l00337"></a>00337 <span class="keyword">class </span>CConstMatrixRowAccessor { <a name="l00338"></a>00338 <span class="keyword">protected</span>: <a name="l00339"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#af77ff1b4adfe42797785331d5238d22b">00339</a> <span class="keyword">const</span> MAT *<a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#af77ff1b4adfe42797785331d5238d22b">m_mat</a>; <a name="l00340"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a47aa975df2011c79938553f1aac49959">00340</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a47aa975df2011c79938553f1aac49959">m_rowInd</a>; <a name="l00341"></a>00341 <span class="keyword">public</span>: <a name="l00342"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a04c3a6b2cc521cbbf229fb4c3473b12e">00342</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MAT<a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a04c3a6b2cc521cbbf229fb4c3473b12e">::value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a04c3a6b2cc521cbbf229fb4c3473b12e">value_type</a>; <a name="l00343"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#aad5120d4083944f32192a2329d79b19b">00343</a> <span class="keyword">typedef</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html" title="A vector-like wrapper for a const Matrix for accessing the elements of a given row with a [] operator...">CConstMatrixRowAccessor<MAT></a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#aad5120d4083944f32192a2329d79b19b">mrpt_autotype</a>; <a name="l00344"></a>00344 <span class="comment">//DECLARE_MRPT_CONTAINER_TYPES</span> <a name="l00345"></a>00345 <span class="comment">//DECLARE_MRPT_CONTAINER_IS_VECTOR</span> <a name="l00346"></a>00346 <span class="comment">//DECLARE_COMMON_CONTAINERS_MEMBERS(value_type)</span> <a name="l00347"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a63fbaef95de041304c841ac06abfdb1a">00347</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a63fbaef95de041304c841ac06abfdb1a">CConstMatrixRowAccessor</a>(<span class="keyword">const</span> MAT &mat,<span class="keywordtype">size_t</span> row):<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>(&mat),<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a326fcb3f5f89eefb649ec6c043c68f98">m_rowInd</a>(row) { <a name="l00348"></a>00348 <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(row<mat.getRowCount()); <a name="l00349"></a>00349 } <a name="l00350"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a147d86bf5dc4912845ea07bef74fffa9">00350</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a147d86bf5dc4912845ea07bef74fffa9">CConstMatrixRowAccessor</a>() {} <a name="l00351"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a69f9699bc5fcbf8f26336fa4da02e193">00351</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a04c3a6b2cc521cbbf229fb4c3473b12e">value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a69f9699bc5fcbf8f26336fa4da02e193">operator[]</a>(<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{ <a name="l00352"></a>00352 <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>)(<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a326fcb3f5f89eefb649ec6c043c68f98">m_rowInd</a>,i); <a name="l00353"></a>00353 } <a name="l00354"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#aa753d13c90e7cc75a288fed54d446441">00354</a> <span class="keyword">typedef</span> detail::AccessorIterator<const CConstMatrixRowAccessor<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a04c3a6b2cc521cbbf229fb4c3473b12e">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#aa753d13c90e7cc75a288fed54d446441">const_iterator</a>; <a name="l00355"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#ad54aa1a743c42dd902e6acdee1903771">00355</a> <span class="keyword">typedef</span> detail::ReverseAccessorIterator<const CConstMatrixRowAccessor<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a04c3a6b2cc521cbbf229fb4c3473b12e">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#ad54aa1a743c42dd902e6acdee1903771">const_reverse_iterator</a>; <a name="l00356"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#aac54522371443aa6afde2576ce0feefc">00356</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#aac54522371443aa6afde2576ce0feefc">begin</a>()<span class="keyword"> const </span>{ <a name="l00357"></a>00357 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,0); <a name="l00358"></a>00358 } <a name="l00359"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#aae74722adb8260a8e90834bf4b402521">00359</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#aae74722adb8260a8e90834bf4b402521">end</a>()<span class="keyword"> const </span>{ <a name="l00360"></a>00360 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getColCount()); <a name="l00361"></a>00361 } <a name="l00362"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a4e04f034e2f15194c54dc10c68ceffb7">00362</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a4e04f034e2f15194c54dc10c68ceffb7">rbegin</a>()<span class="keyword"> const </span>{ <a name="l00363"></a>00363 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getColCount()-1); <a name="l00364"></a>00364 } <a name="l00365"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#ad63b4818a4bcccaafda65d24c27230d4">00365</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#ad63b4818a4bcccaafda65d24c27230d4">rend</a>()<span class="keyword"> const </span>{ <a name="l00366"></a>00366 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,-1); <a name="l00367"></a>00367 } <a name="l00368"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#ad00b9006fd776a34e11fe669554ee58e">00368</a> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#ad00b9006fd776a34e11fe669554ee58e">size</a>()<span class="keyword"> const </span>{ <a name="l00369"></a>00369 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getColCount(); <a name="l00370"></a>00370 } <a name="l00371"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a3aca886a0ce6798f6d9078a7c1e2c846">00371</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a3aca886a0ce6798f6d9078a7c1e2c846">resize</a>(<span class="keywordtype">size_t</span> N) { <a name="l00372"></a>00372 <span class="keywordflow">if</span> (N!=<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a93d2639ed61a75711d623098efb74744">size</a>()) <span class="keywordflow">throw</span> <a class="code" href="classstd_1_1logic__error.html" title="STL class.">std::logic_error</a>(<span class="stringliteral">"Tried to resize a fixed-size vector"</span>); <a name="l00373"></a>00373 } <a name="l00374"></a>00374 }; <a name="l00375"></a><a class="code" href="namespacemrpt_1_1math.html#adeece7c3e8af5c4cd6677ef749265579">00375</a> <span class="keyword">template</span><<span class="keyword">typename</span> MAT> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html" title="A vector-like wrapper for a const Matrix for accessing the elements of a given row with a [] operator...">CConstMatrixRowAccessor<MAT></a> <a class="code" href="namespacemrpt_1_1math.html#a5ea466ba07ea389dd3bb90326b0ac255">getRowAccessor</a>(<span class="keyword">const</span> MAT &m,<span class="keywordtype">size_t</span> rowIdx) { <a name="l00376"></a>00376 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given row with a [] operator...">CMatrixRowAccessor<MAT></a>(m,rowIdx); <a name="l00377"></a>00377 } <a name="l00378"></a>00378 <span class="comment"></span> <a name="l00379"></a>00379 <span class="comment"> /** A vector-like wrapper for a const Matrix for accessing the elements of a given row with a [] operator, with offset and custom spacing.</span> <a name="l00380"></a>00380 <span class="comment"> * For usage with MRPT's CMatrixTemplate only (for MRPT numeric matrices, use Eigen methods)</span> <a name="l00381"></a>00381 <span class="comment"> * \sa CConstMatrixColumnAccessorExtended,CMatrixRowAccessor,CConstMatrixRowAccessor,CMatrixRowAccessorExtended</span> <a name="l00382"></a>00382 <span class="comment"> */</span> <a name="l00383"></a>00383 <span class="keyword">template</span><<span class="keyword">class</span> MAT> <a name="l00384"></a>00384 <span class="keyword">class </span>CConstMatrixRowAccessorExtended { <a name="l00385"></a>00385 <span class="keyword">protected</span>: <a name="l00386"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a667593f227414ee6098322f2e3b5f2d3">00386</a> <span class="keyword">const</span> MAT *<a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a667593f227414ee6098322f2e3b5f2d3">m_mat</a>; <a name="l00387"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a2f1e14a9c6a1891ca3e277a2d0d4c855">00387</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a2f1e14a9c6a1891ca3e277a2d0d4c855">m_rowInd</a>; <a name="l00388"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#aa89e9de734901205124428a6fcf2d568">00388</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#aa89e9de734901205124428a6fcf2d568">m_colOffset</a>; <a name="l00389"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a4b539d9eb23848760a0b8986ee9e9559">00389</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a4b539d9eb23848760a0b8986ee9e9559">m_elementsSpace</a>; <a name="l00390"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a60813478818f432889e36f8f289191c2">00390</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a60813478818f432889e36f8f289191c2">howMany</a>; <a name="l00391"></a>00391 <span class="keyword">public</span>: <a name="l00392"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a074ddb87b07bfa681867e919bdbf80c3">00392</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MAT<a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a074ddb87b07bfa681867e919bdbf80c3">::value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a074ddb87b07bfa681867e919bdbf80c3">value_type</a>; <a name="l00393"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a2530217226031caa62d193f41e325927">00393</a> <span class="keyword">typedef</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html" title="A vector-like wrapper for a const Matrix for accessing the elements of a given row with a [] operator...">CConstMatrixRowAccessorExtended<MAT></a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a2530217226031caa62d193f41e325927">mrpt_autotype</a>; <a name="l00394"></a>00394 <span class="comment">//DECLARE_MRPT_CONTAINER_TYPES</span> <a name="l00395"></a>00395 <span class="comment">//DECLARE_MRPT_CONTAINER_IS_VECTOR</span> <a name="l00396"></a>00396 <span class="comment">//DECLARE_COMMON_CONTAINERS_MEMBERS(value_type)</span> <a name="l00397"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a9d2d0cb7f37de3092a6577d6665a7703">00397</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a9d2d0cb7f37de3092a6577d6665a7703">CConstMatrixRowAccessorExtended</a>(<span class="keyword">const</span> MAT &mat,<span class="keywordtype">size_t</span> row,<span class="keywordtype">size_t</span> offset,<span class="keywordtype">size_t</span> space):<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>(&mat),<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a326fcb3f5f89eefb649ec6c043c68f98">m_rowInd</a>(row),m_colOffset(offset),m_elementsSpace(space) { <a name="l00398"></a>00398 <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(row<mat.getRowCount()); <a name="l00399"></a>00399 howMany=(mat.getColCount()-m_colOffset)/m_elementsSpace; <a name="l00400"></a>00400 } <a name="l00401"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a4071a80f16838dcd11906ef30e9dc9b1">00401</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a4071a80f16838dcd11906ef30e9dc9b1">CConstMatrixRowAccessorExtended</a>() {} <a name="l00402"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a291f5b0ed4da2e211f968b1ae7a10f3c">00402</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a074ddb87b07bfa681867e919bdbf80c3">value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a291f5b0ed4da2e211f968b1ae7a10f3c">operator[]</a>(<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{ <a name="l00403"></a>00403 <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>)(<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a326fcb3f5f89eefb649ec6c043c68f98">m_rowInd</a>,m_colOffset+(i*m_elementsSpace)); <a name="l00404"></a>00404 } <a name="l00405"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#aad24e2de82a0ad23e89b01d68a2e22e1">00405</a> <span class="keyword">typedef</span> detail::AccessorIterator<const CConstMatrixRowAccessorExtended<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a074ddb87b07bfa681867e919bdbf80c3">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#aad24e2de82a0ad23e89b01d68a2e22e1">const_iterator</a>; <a name="l00406"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a997565e0fc99dd2a34c5e3f6cab3c960">00406</a> <span class="keyword">typedef</span> detail::ReverseAccessorIterator<const CConstMatrixRowAccessorExtended<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a074ddb87b07bfa681867e919bdbf80c3">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a997565e0fc99dd2a34c5e3f6cab3c960">const_reverse_iterator</a>; <a name="l00407"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a814dd6bbfcdb42740c5fdc3607021488">00407</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a814dd6bbfcdb42740c5fdc3607021488">begin</a>()<span class="keyword"> const </span>{ <a name="l00408"></a>00408 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,0); <a name="l00409"></a>00409 } <a name="l00410"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a27934310912c2a8ade799c64b08f8677">00410</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a27934310912c2a8ade799c64b08f8677">end</a>()<span class="keyword"> const </span>{ <a name="l00411"></a>00411 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,howMany); <a name="l00412"></a>00412 } <a name="l00413"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a2978110cc5afd06e7041de76fc1d16d6">00413</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a2978110cc5afd06e7041de76fc1d16d6">rbegin</a>()<span class="keyword"> const </span>{ <a name="l00414"></a>00414 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,howMany-1); <a name="l00415"></a>00415 } <a name="l00416"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a44e62586389b6be34b9aaa931d0b1483">00416</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a44e62586389b6be34b9aaa931d0b1483">rend</a>()<span class="keyword"> const </span>{ <a name="l00417"></a>00417 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,-1); <a name="l00418"></a>00418 } <a name="l00419"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a00a345f511753e8ada922f3e6db1ef5f">00419</a> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a00a345f511753e8ada922f3e6db1ef5f">size</a>()<span class="keyword"> const </span>{ <a name="l00420"></a>00420 <span class="keywordflow">return</span> howMany; <a name="l00421"></a>00421 } <a name="l00422"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a7558972ca9ae37ffc76140d6f843c6d9">00422</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html#a7558972ca9ae37ffc76140d6f843c6d9">resize</a>(<span class="keywordtype">size_t</span> N) { <a name="l00423"></a>00423 <span class="keywordflow">if</span> (N!=<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a93d2639ed61a75711d623098efb74744">size</a>()) <span class="keywordflow">throw</span> <a class="code" href="classstd_1_1logic__error.html" title="STL class.">std::logic_error</a>(<span class="stringliteral">"Tried to resize a fixed-size vector"</span>); <a name="l00424"></a>00424 } <a name="l00425"></a>00425 }; <a name="l00426"></a><a class="code" href="namespacemrpt_1_1math.html#aea24b28916cac174783792b46a09ca8e">00426</a> <span class="keyword">template</span><<span class="keyword">typename</span> MAT> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html" title="A vector-like wrapper for a const Matrix for accessing the elements of a given row with a [] operator...">CConstMatrixRowAccessorExtended<MAT></a> <a class="code" href="namespacemrpt_1_1math.html#a5ea466ba07ea389dd3bb90326b0ac255">getRowAccessor</a>(<span class="keyword">const</span> MAT &m,<span class="keywordtype">size_t</span> rowIdx,<span class="keywordtype">size_t</span> offset,<span class="keywordtype">size_t</span> space=1) { <a name="l00427"></a>00427 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor_extended.html" title="A vector-like wrapper for a const Matrix for accessing the elements of a given row with a [] operator...">CConstMatrixRowAccessorExtended<MAT></a>(m,rowIdx,offset,space); <a name="l00428"></a>00428 } <a name="l00429"></a>00429 <a name="l00430"></a>00430 <span class="comment"></span> <a name="l00431"></a>00431 <span class="comment"> /** A vector-like wrapper for a Matrix for accessing the elements of a given column with a [] operator.</span> <a name="l00432"></a>00432 <span class="comment"> * \sa CMatrixRowAccessor,CMatrixColumnAccessorExtended,CConstMatrixColumnAccessor,CConstMatrixColumnAccessorExtended</span> <a name="l00433"></a>00433 <span class="comment"> */</span> <a name="l00434"></a>00434 <span class="keyword">template</span> <<span class="keyword">typename</span> MAT> <span class="keyword">class </span>CMatrixColumnAccessor { <a name="l00435"></a>00435 <span class="keyword">protected</span>: <a name="l00436"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#aaaef0e1cb9d62d763f265a6173d86978">00436</a> MAT *<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#aaaef0e1cb9d62d763f265a6173d86978">m_mat</a>; <a name="l00437"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a4994c07465cd10a97f8a577a93817b42">00437</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a4994c07465cd10a97f8a577a93817b42">m_colInd</a>; <a name="l00438"></a>00438 <span class="keyword">public</span>: <a name="l00439"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">00439</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MAT<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">::value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">value_type</a>; <a name="l00440"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a511c553876ac94fa935153b12c6a0b37">00440</a> <span class="keyword">typedef</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given column with a [] operator...">CMatrixColumnAccessor<MAT></a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a511c553876ac94fa935153b12c6a0b37">mrpt_autotype</a>; <a name="l00441"></a>00441 <span class="comment">//DECLARE_MRPT_CONTAINER_TYPES</span> <a name="l00442"></a>00442 <span class="comment">//DECLARE_MRPT_CONTAINER_IS_VECTOR</span> <a name="l00443"></a>00443 <span class="comment">//DECLARE_COMMON_CONTAINERS_MEMBERS(value_type)</span> <a name="l00444"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a86a45a54bc444ba0a6021086b2d9d32f">00444</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a86a45a54bc444ba0a6021086b2d9d32f">CMatrixColumnAccessor</a>(MAT &mat, <span class="keywordtype">size_t</span> colIdx) : <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>(&mat), m_colInd(colIdx) { <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(colIdx<mat.getColCount()) } <a name="l00445"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#afe6da37008d3417925c4c5077c0d5f8c">00445</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#afe6da37008d3417925c4c5077c0d5f8c">CMatrixColumnAccessor</a>() {} <a name="l00446"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a44d6f0dd7875734a3a587f84597483b4">00446</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">value_type</a> &<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a44d6f0dd7875734a3a587f84597483b4">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">size_t</span> i) { <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>)(i,m_colInd); } <a name="l00447"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a34c7f6ca1c6494e15a2deca79048e847">00447</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a34c7f6ca1c6494e15a2deca79048e847">operator[]</a>(<span class="keyword">const</span> <span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>)(i,m_colInd); } <a name="l00448"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a90ca2b93a3729a91bbd8cdd6a549a17b">00448</a> <span class="keyword">typedef</span> detail::AccessorIterator<CMatrixColumnAccessor<MAT>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a90ca2b93a3729a91bbd8cdd6a549a17b">iterator</a>; <a name="l00449"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a23928f7ce659465fc203731141af944a">00449</a> <span class="keyword">typedef</span> detail::AccessorIterator<const CMatrixColumnAccessor<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a23928f7ce659465fc203731141af944a">const_iterator</a>; <a name="l00450"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a4a0cc05ca2d7aa56cf6f849e6a1367d7">00450</a> <span class="keyword">typedef</span> detail::ReverseAccessorIterator<CMatrixColumnAccessor<MAT>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a4a0cc05ca2d7aa56cf6f849e6a1367d7">reverse_iterator</a>; <a name="l00451"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a30d5ae7eab2aab9ba79221a8a915f6d3">00451</a> <span class="keyword">typedef</span> detail::ReverseAccessorIterator<const CMatrixColumnAccessor<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a30d5ae7eab2aab9ba79221a8a915f6d3">const_reverse_iterator</a>; <a name="l00452"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#abf70d40211188f8b8de22bda0515fedf">00452</a> <span class="keyword">inline</span> iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#abf70d40211188f8b8de22bda0515fedf">begin</a>() { <a name="l00453"></a>00453 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ae0f8354cae7a123089627432dd0076e5">iterator</a>(*<span class="keyword">this</span>,0); <a name="l00454"></a>00454 } <a name="l00455"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#aa5d37d92251a69592573be5e2508dc47">00455</a> <span class="keyword">inline</span> const_iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#aa5d37d92251a69592573be5e2508dc47">begin</a>()<span class="keyword"> const </span>{ <a name="l00456"></a>00456 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,0); <a name="l00457"></a>00457 } <a name="l00458"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a3b9b4f3d4eb322bdf7e7cf26cccdc761">00458</a> <span class="keyword">inline</span> iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a3b9b4f3d4eb322bdf7e7cf26cccdc761">end</a>() { <a name="l00459"></a>00459 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ae0f8354cae7a123089627432dd0076e5">iterator</a>(*<span class="keyword">this</span>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getRowCount()); <a name="l00460"></a>00460 } <a name="l00461"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a267f413a743f08a35745bb83b891ab2d">00461</a> <span class="keyword">inline</span> const_iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a267f413a743f08a35745bb83b891ab2d">end</a>()<span class="keyword"> const </span>{ <a name="l00462"></a>00462 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getRowCount()); <a name="l00463"></a>00463 } <a name="l00464"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a8cad632d4597e2991094a27e27d6526c">00464</a> <span class="keyword">inline</span> reverse_iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a8cad632d4597e2991094a27e27d6526c">rbegin</a>() { <a name="l00465"></a>00465 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a87c6efdeb4ab6ba28286dde985feb9e4">reverse_iterator</a>(*<span class="keyword">this</span>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getRowCount()-1); <a name="l00466"></a>00466 } <a name="l00467"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a96c8ba45a1746227cf70d4c584617c82">00467</a> <span class="keyword">inline</span> const_reverse_iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a96c8ba45a1746227cf70d4c584617c82">rbegin</a>()<span class="keyword"> const </span>{ <a name="l00468"></a>00468 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getRowCount()-1); <a name="l00469"></a>00469 } <a name="l00470"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a6b61fe60f8bfbeef269c4a9e626066ff">00470</a> <span class="keyword">inline</span> reverse_iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a6b61fe60f8bfbeef269c4a9e626066ff">rend</a>() { <a name="l00471"></a>00471 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a87c6efdeb4ab6ba28286dde985feb9e4">reverse_iterator</a>(*<span class="keyword">this</span>,-1); <a name="l00472"></a>00472 } <a name="l00473"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a98401097881a685a63b86e138dff30de">00473</a> <span class="keyword">inline</span> const_reverse_iterator <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a98401097881a685a63b86e138dff30de">rend</a>()<span class="keyword"> const </span>{ <a name="l00474"></a>00474 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,-1); <a name="l00475"></a>00475 } <a name="l00476"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a6fcbaa94116c3dc72edf07ff7c49e304">00476</a> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a6fcbaa94116c3dc72edf07ff7c49e304">size</a>()<span class="keyword"> const </span>{ <a name="l00477"></a>00477 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getRowCount(); <a name="l00478"></a>00478 } <a name="l00479"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#acd56a2ffcd9ef6ee891e57ca61791059">00479</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#acd56a2ffcd9ef6ee891e57ca61791059">resize</a>(<span class="keywordtype">size_t</span> N) { <a name="l00480"></a>00480 <span class="keywordflow">if</span> (N!=<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a93d2639ed61a75711d623098efb74744">size</a>()) <span class="keywordflow">throw</span> <a class="code" href="classstd_1_1logic__error.html" title="STL class.">std::logic_error</a>(<span class="stringliteral">"Tried to resize a fixed-size vector"</span>); <a name="l00481"></a>00481 } <a name="l00482"></a>00482 }; <a name="l00483"></a><a class="code" href="namespacemrpt_1_1math.html#ab6b936eae168fad493974377fffe2bd9">00483</a> <span class="keyword">template</span><<span class="keyword">typename</span> MAT> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given column with a [] operator...">CMatrixColumnAccessor<MAT></a> <a class="code" href="namespacemrpt_1_1math.html#ab6b936eae168fad493974377fffe2bd9">getColumnAccessor</a>(MAT &m,<span class="keywordtype">size_t</span> colIdx) { <a name="l00484"></a>00484 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given column with a [] operator...">CMatrixColumnAccessor<MAT></a>(m,colIdx); <a name="l00485"></a>00485 } <a name="l00486"></a>00486 <span class="comment"></span> <a name="l00487"></a>00487 <span class="comment"> /** A vector-like wrapper for a Matrix for accessing the elements of a given column with a [] operator, with offset and custom spacing.</span> <a name="l00488"></a>00488 <span class="comment"> * \sa CMatrixRowAccessorExtended,CMatrixColumnAccessor,CConstMatrixColumnAccessor,CConstMatrixColumnAccessorExtended</span> <a name="l00489"></a>00489 <span class="comment"> */</span> <a name="l00490"></a>00490 <span class="keyword">template</span><<span class="keyword">typename</span> MAT> <a name="l00491"></a>00491 <span class="keyword">class </span>CMatrixColumnAccessorExtended { <a name="l00492"></a>00492 <span class="keyword">protected</span>: <a name="l00493"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a9cd9d04c2f49d448502bed7a42293fb9">00493</a> MAT *<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a9cd9d04c2f49d448502bed7a42293fb9">m_mat</a>; <a name="l00494"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a0cc7ba483e0287fb346482b44643c2f7">00494</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a0cc7ba483e0287fb346482b44643c2f7">m_colInd</a>; <a name="l00495"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a10fe1530b7b9213e93d68c65b146479a">00495</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a10fe1530b7b9213e93d68c65b146479a">m_rowOffset</a>; <a name="l00496"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a759d90b582701e8224e180131e20b373">00496</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a759d90b582701e8224e180131e20b373">m_elementsSpace</a>; <a name="l00497"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#ade5a9851ba1908f6dc6abbff9e4788d2">00497</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#ade5a9851ba1908f6dc6abbff9e4788d2">howMany</a>; <a name="l00498"></a>00498 <span class="keyword">public</span>: <a name="l00499"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">00499</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MAT<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">::value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">value_type</a>; <a name="l00500"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#aad8eb492b7036ef025c643d70bd21afb">00500</a> <span class="keyword">typedef</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given column with a [] operator...">CMatrixColumnAccessorExtended<MAT></a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#aad8eb492b7036ef025c643d70bd21afb">mrpt_autotype</a>; <a name="l00501"></a>00501 <span class="comment">//DECLARE_MRPT_CONTAINER_TYPES</span> <a name="l00502"></a>00502 <span class="comment">//DECLARE_MRPT_CONTAINER_IS_VECTOR</span> <a name="l00503"></a>00503 <span class="comment">//DECLARE_COMMON_CONTAINERS_MEMBERS(mrpt_autotype)</span> <a name="l00504"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a48d483b4ce42f16161ff351358fdd5e3">00504</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a48d483b4ce42f16161ff351358fdd5e3">CMatrixColumnAccessorExtended</a>(MAT &mat,<span class="keywordtype">size_t</span> col,<span class="keywordtype">size_t</span> offset,<span class="keywordtype">size_t</span> space):<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>(&mat),m_colInd(col),m_rowOffset(offset),m_elementsSpace(space) { <a name="l00505"></a>00505 <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(col<mat.getColCount()); <a name="l00506"></a>00506 howMany=(mat.getRowCount()-m_rowOffset)/m_elementsSpace; <a name="l00507"></a>00507 } <a name="l00508"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#ae6f9f77f17e7c548d49f23cf7522551e">00508</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#ae6f9f77f17e7c548d49f23cf7522551e">CMatrixColumnAccessorExtended</a>() {} <a name="l00509"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a2eb24a64dc11e1619f808299cf98532c">00509</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">value_type</a> &<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a2eb24a64dc11e1619f808299cf98532c">operator[]</a>(<span class="keywordtype">size_t</span> i) { <a name="l00510"></a>00510 <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>)(m_rowOffset+(i*m_elementsSpace),m_colInd); <a name="l00511"></a>00511 } <a name="l00512"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#aa74e814b3d504ef3a94099783f9656cc">00512</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#aa74e814b3d504ef3a94099783f9656cc">operator[]</a>(<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{ <a name="l00513"></a>00513 <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>)(m_rowOffset+(i*m_elementsSpace),m_colInd); <a name="l00514"></a>00514 } <a name="l00515"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#aa5a70c9d4bd77b11f62e168fb7e3c530">00515</a> <span class="keyword">typedef</span> detail::AccessorIterator<CMatrixColumnAccessorExtended<MAT>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#aa5a70c9d4bd77b11f62e168fb7e3c530">iterator</a>; <a name="l00516"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a42703afb86fc35c5df588b765eb24e03">00516</a> <span class="keyword">typedef</span> detail::AccessorIterator<const CMatrixColumnAccessorExtended<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a42703afb86fc35c5df588b765eb24e03">const_iterator</a>; <a name="l00517"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a01af4559bf55f6860a8c9ee1555370c7">00517</a> <span class="keyword">typedef</span> detail::ReverseAccessorIterator<CMatrixColumnAccessorExtended<MAT>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a01af4559bf55f6860a8c9ee1555370c7">reverse_iterator</a>; <a name="l00518"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#adceb9037e9addc7db331afe2e344d444">00518</a> <span class="keyword">typedef</span> detail::ReverseAccessorIterator<const CMatrixColumnAccessorExtended<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#adceb9037e9addc7db331afe2e344d444">const_reverse_iterator</a>; <a name="l00519"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a0ce25edd302566791071b53a0822cc44">00519</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a0ce25edd302566791071b53a0822cc44">begin</a>() { <a name="l00520"></a>00520 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ae0f8354cae7a123089627432dd0076e5">iterator</a>(*<span class="keyword">this</span>,0); <a name="l00521"></a>00521 } <a name="l00522"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#ab3b85e0251816ec0a053a7724ef966b2">00522</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#ab3b85e0251816ec0a053a7724ef966b2">begin</a>()<span class="keyword"> const </span>{ <a name="l00523"></a>00523 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,0); <a name="l00524"></a>00524 } <a name="l00525"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a1bd1a92eca850feafb37f687fdfc5d12">00525</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a1bd1a92eca850feafb37f687fdfc5d12">end</a>() { <a name="l00526"></a>00526 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ae0f8354cae7a123089627432dd0076e5">iterator</a>(*<span class="keyword">this</span>,howMany); <a name="l00527"></a>00527 } <a name="l00528"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a8557ffd881a8744a32623253e0dbfb16">00528</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a8557ffd881a8744a32623253e0dbfb16">end</a>()<span class="keyword"> const </span>{ <a name="l00529"></a>00529 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,howMany); <a name="l00530"></a>00530 } <a name="l00531"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#afb8b6b532b462270aad628571c4c2c30">00531</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#afb8b6b532b462270aad628571c4c2c30">rbegin</a>() { <a name="l00532"></a>00532 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a87c6efdeb4ab6ba28286dde985feb9e4">reverse_iterator</a>(*<span class="keyword">this</span>,howMany-1); <a name="l00533"></a>00533 } <a name="l00534"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#abfed55fe573c9304347e7d73a12ed8ca">00534</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#abfed55fe573c9304347e7d73a12ed8ca">rbegin</a>()<span class="keyword"> const </span>{ <a name="l00535"></a>00535 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,howMany-1); <a name="l00536"></a>00536 } <a name="l00537"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a7f9fbe877d1efcaf9a9e327568da713e">00537</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a7f9fbe877d1efcaf9a9e327568da713e">rend</a>() { <a name="l00538"></a>00538 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a87c6efdeb4ab6ba28286dde985feb9e4">reverse_iterator</a>(*<span class="keyword">this</span>,-1); <a name="l00539"></a>00539 } <a name="l00540"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a9395b367c55746cd42d5394fb980ef6d">00540</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a9395b367c55746cd42d5394fb980ef6d">rend</a>()<span class="keyword"> const </span>{ <a name="l00541"></a>00541 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,-1); <a name="l00542"></a>00542 } <a name="l00543"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4836100a93fece13716e8479eb477435">00543</a> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4836100a93fece13716e8479eb477435">size</a>()<span class="keyword"> const </span>{ <a name="l00544"></a>00544 <span class="keywordflow">return</span> howMany(); <a name="l00545"></a>00545 } <a name="l00546"></a><a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#ab631696941adb4712f064eed80ff4587">00546</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#ab631696941adb4712f064eed80ff4587">resize</a>(<span class="keywordtype">size_t</span> N) { <a name="l00547"></a>00547 <span class="keywordflow">if</span> (N!=<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a93d2639ed61a75711d623098efb74744">size</a>()) <span class="keywordflow">throw</span> <a class="code" href="classstd_1_1logic__error.html" title="STL class.">std::logic_error</a>(<span class="stringliteral">"Tried to resize a fixed-size vector"</span>); <a name="l00548"></a>00548 } <a name="l00549"></a>00549 }; <a name="l00550"></a><a class="code" href="namespacemrpt_1_1math.html#ac718bba5e1dcf006ca989542a87a3ae5">00550</a> <span class="keyword">template</span><<span class="keyword">typename</span> MAT> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given column with a [] operator...">CMatrixColumnAccessorExtended<MAT></a> <a class="code" href="namespacemrpt_1_1math.html#ab6b936eae168fad493974377fffe2bd9">getColumnAccessor</a>(MAT &m,<span class="keywordtype">size_t</span> colIdx,<span class="keywordtype">size_t</span> offset,<span class="keywordtype">size_t</span> space=1) { <a name="l00551"></a>00551 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given column with a [] operator...">CMatrixColumnAccessorExtended<MAT></a>(m,colIdx,offset,space); <a name="l00552"></a>00552 } <a name="l00553"></a>00553 <span class="comment"></span> <a name="l00554"></a>00554 <span class="comment"> /** A vector-like wrapper for a const Matrix for accessing the elements of a given column with a [] operator.</span> <a name="l00555"></a>00555 <span class="comment"> * \sa CConstMatrixRowAccessor,CMatrixColumnAccessorExtended,CMatrixColumnAccessor,CConstMatrixColumnAccessorExtended</span> <a name="l00556"></a>00556 <span class="comment"> */</span> <a name="l00557"></a>00557 <span class="keyword">template</span><<span class="keyword">class</span> MAT> <a name="l00558"></a>00558 <span class="keyword">class </span>CConstMatrixColumnAccessor { <a name="l00559"></a>00559 <span class="keyword">protected</span>: <a name="l00560"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a40a657fbc494fceca354abfc19f1b0ed">00560</a> <span class="keyword">const</span> MAT *<a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a40a657fbc494fceca354abfc19f1b0ed">m_mat</a>; <a name="l00561"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#af4174ba0ff4d486a5807709cc89f34ed">00561</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#af4174ba0ff4d486a5807709cc89f34ed">m_colInd</a>; <a name="l00562"></a>00562 <span class="keyword">public</span>: <a name="l00563"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#ad9a257136fd56b9f086093b2bcc37e26">00563</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MAT<a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#ad9a257136fd56b9f086093b2bcc37e26">::value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#ad9a257136fd56b9f086093b2bcc37e26">value_type</a>; <a name="l00564"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#ae6b8cab4521830c5504521b589d0179b">00564</a> <span class="keyword">typedef</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html" title="A vector-like wrapper for a const Matrix for accessing the elements of a given column with a [] opera...">CConstMatrixColumnAccessor<MAT></a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#ae6b8cab4521830c5504521b589d0179b">mrpt_autotype</a>; <a name="l00565"></a>00565 <span class="comment">//DECLARE_MRPT_CONTAINER_TYPES</span> <a name="l00566"></a>00566 <span class="comment">//DECLARE_MRPT_CONTAINER_IS_VECTOR</span> <a name="l00567"></a>00567 <span class="comment">//DECLARE_COMMON_CONTAINERS_MEMBERS(value_type)</span> <a name="l00568"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a084d846175d3bf4ad99d882712812e21">00568</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a084d846175d3bf4ad99d882712812e21">CConstMatrixColumnAccessor</a>(<span class="keyword">const</span> MAT &mat,<span class="keywordtype">size_t</span> colIdx):<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>(&mat),m_colInd(colIdx) { <a name="l00569"></a>00569 <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(colIdx<mat.getColCount()); <a name="l00570"></a>00570 } <a name="l00571"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a3e7ed2299cea29bd442c23d009b027f8">00571</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a3e7ed2299cea29bd442c23d009b027f8">CConstMatrixColumnAccessor</a>() {} <a name="l00572"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#ad5872c218d08411614ebb4bc76390bc1">00572</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#ad9a257136fd56b9f086093b2bcc37e26">value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#ad5872c218d08411614ebb4bc76390bc1">operator[]</a>(<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{ <a name="l00573"></a>00573 <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>)(i,m_colInd); <a name="l00574"></a>00574 } <a name="l00575"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a6f32fd99d360b3e384ee3f958ec5ac89">00575</a> <span class="keyword">typedef</span> detail::AccessorIterator<const CConstMatrixColumnAccessor<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#ad9a257136fd56b9f086093b2bcc37e26">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a6f32fd99d360b3e384ee3f958ec5ac89">const_iterator</a>; <a name="l00576"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a2c5cbf958f17b48782cce3734e164052">00576</a> <span class="keyword">typedef</span> detail::ReverseAccessorIterator<const CConstMatrixColumnAccessor<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#ad9a257136fd56b9f086093b2bcc37e26">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a2c5cbf958f17b48782cce3734e164052">const_reverse_iterator</a>; <a name="l00577"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a7738d5f11f5df9e17e23840aca4dc8ba">00577</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a7738d5f11f5df9e17e23840aca4dc8ba">begin</a>()<span class="keyword"> const </span>{ <a name="l00578"></a>00578 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,0); <a name="l00579"></a>00579 } <a name="l00580"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a1bb8e2bb50e5424a3f7da282c1d0308c">00580</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a1bb8e2bb50e5424a3f7da282c1d0308c">end</a>()<span class="keyword"> const </span>{ <a name="l00581"></a>00581 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getRowCount()); <a name="l00582"></a>00582 } <a name="l00583"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a40a320d9cf3a97b70c859584d5578c8f">00583</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a40a320d9cf3a97b70c859584d5578c8f">rbegin</a>()<span class="keyword"> const </span>{ <a name="l00584"></a>00584 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getRowCount()-1); <a name="l00585"></a>00585 } <a name="l00586"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a6eea5bf45cd0c7fab1e26ac058831822">00586</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a6eea5bf45cd0c7fab1e26ac058831822">rend</a>()<span class="keyword"> const </span>{ <a name="l00587"></a>00587 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,-1); <a name="l00588"></a>00588 } <a name="l00589"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a8937be1ed4f0ca701f5d394a2753d5de">00589</a> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a8937be1ed4f0ca701f5d394a2753d5de">size</a>()<span class="keyword"> const </span>{ <a name="l00590"></a>00590 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>->getRowCount(); <a name="l00591"></a>00591 } <a name="l00592"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a31d0f211ad85981bd89a84c0567bacba">00592</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#a31d0f211ad85981bd89a84c0567bacba">resize</a>(<span class="keywordtype">size_t</span> N) { <a name="l00593"></a>00593 <span class="keywordflow">if</span> (N!=<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a93d2639ed61a75711d623098efb74744">size</a>()) <span class="keywordflow">throw</span> <a class="code" href="classstd_1_1logic__error.html" title="STL class.">std::logic_error</a>(<span class="stringliteral">"Tried to resize a fixed-size vector"</span>); <a name="l00594"></a>00594 } <a name="l00595"></a>00595 }; <a name="l00596"></a><a class="code" href="namespacemrpt_1_1math.html#a491becc56aa9d77d98858aa1c88b0f25">00596</a> <span class="keyword">template</span><<span class="keyword">typename</span> MAT> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html" title="A vector-like wrapper for a const Matrix for accessing the elements of a given column with a [] opera...">CConstMatrixColumnAccessor<MAT></a> <a class="code" href="namespacemrpt_1_1math.html#ab6b936eae168fad493974377fffe2bd9">getColumnAccessor</a>(<span class="keyword">const</span> MAT &m,<span class="keywordtype">size_t</span> colIdx) { <a name="l00597"></a>00597 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html" title="A vector-like wrapper for a const Matrix for accessing the elements of a given column with a [] opera...">CConstMatrixColumnAccessor<MAT></a>(m,colIdx); <a name="l00598"></a>00598 } <a name="l00599"></a>00599 <span class="comment"></span> <a name="l00600"></a>00600 <span class="comment"> /** A vector-like wrapper for a const Matrix for accessing the elements of a given column with a [] operator, with offset and custom spacing.</span> <a name="l00601"></a>00601 <span class="comment"> * \sa CConstMatrixRowAccessorExtended,CMatrixColumnAccessor,CConstMatrixColumnAccessor,CMatrixColumnAccessorExtended</span> <a name="l00602"></a>00602 <span class="comment"> */</span> <a name="l00603"></a>00603 <span class="keyword">template</span><<span class="keyword">typename</span> MAT> <a name="l00604"></a>00604 <span class="keyword">class </span>CConstMatrixColumnAccessorExtended { <a name="l00605"></a>00605 <span class="keyword">protected</span>: <a name="l00606"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#aa6f0478af454e5c82ef5192d6d89b09b">00606</a> <span class="keyword">const</span> MAT *<a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#aa6f0478af454e5c82ef5192d6d89b09b">m_mat</a>; <a name="l00607"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#aa5106d9f335e4fb00b91ea56bf9679ce">00607</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#aa5106d9f335e4fb00b91ea56bf9679ce">m_colInd</a>; <a name="l00608"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a1e1bdc3558086a9c9def7feedcad000b">00608</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a1e1bdc3558086a9c9def7feedcad000b">m_rowOffset</a>; <a name="l00609"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a3978321aef7dbdad7bdbae7ba66a036c">00609</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a3978321aef7dbdad7bdbae7ba66a036c">m_elementsSpace</a>; <a name="l00610"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a3912428103a924890f6637658c5cbead">00610</a> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a3912428103a924890f6637658c5cbead">howMany</a>; <a name="l00611"></a>00611 <span class="keyword">public</span>: <a name="l00612"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a9e475c09814d9268b0399f7010236854">00612</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MAT<a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a9e475c09814d9268b0399f7010236854">::value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a9e475c09814d9268b0399f7010236854">value_type</a>; <a name="l00613"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a6ea8395ce802b5eca548a8ded9efd0c6">00613</a> <span class="keyword">typedef</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html" title="A vector-like wrapper for a Matrix for accessing the elements of a given column with a [] operator...">CMatrixColumnAccessorExtended<MAT></a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a6ea8395ce802b5eca548a8ded9efd0c6">mrpt_autotype</a>; <a name="l00614"></a>00614 <span class="comment">//DECLARE_MRPT_CONTAINER_TYPES</span> <a name="l00615"></a>00615 <span class="comment">//DECLARE_MRPT_CONTAINER_IS_VECTOR</span> <a name="l00616"></a>00616 <span class="comment">//DECLARE_COMMON_CONTAINERS_MEMBERS(value_type)</span> <a name="l00617"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#aa2726b1ec04963f797d504830fe0e052">00617</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#aa2726b1ec04963f797d504830fe0e052">CConstMatrixColumnAccessorExtended</a>(<span class="keyword">const</span> MAT &mat,<span class="keywordtype">size_t</span> col,<span class="keywordtype">size_t</span> offset,<span class="keywordtype">size_t</span> space):<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>(&mat),m_colInd(col),m_rowOffset(offset),m_elementsSpace(space) { <a name="l00618"></a>00618 <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(col<mat.getColCount()); <a name="l00619"></a>00619 howMany=(mat.getRowCount()-m_rowOffset)/m_elementsSpace; <a name="l00620"></a>00620 } <a name="l00621"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#ab9cdc7d7986f30267294435ff4b9f184">00621</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#ab9cdc7d7986f30267294435ff4b9f184">CConstMatrixColumnAccessorExtended</a>() {} <a name="l00622"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a446e128d0f8621b4f38211485294ef96">00622</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a9e475c09814d9268b0399f7010236854">value_type</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a446e128d0f8621b4f38211485294ef96">operator[]</a>(<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{ <a name="l00623"></a>00623 <span class="keywordflow">return</span> (*<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4af9d3461e04bcda4441d2c755b8b7d4">m_mat</a>)(m_rowOffset+(i*m_elementsSpace),m_colInd); <a name="l00624"></a>00624 } <a name="l00625"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#ac26a5d1a36ce3b6317b4555ad8dac8c6">00625</a> <span class="keyword">typedef</span> detail::AccessorIterator<const CConstMatrixColumnAccessorExtended<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a9e475c09814d9268b0399f7010236854">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#ac26a5d1a36ce3b6317b4555ad8dac8c6">const_iterator</a>; <a name="l00626"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#adcd06cba8e7e8ca0a5e3a42b741555a2">00626</a> <span class="keyword">typedef</span> detail::ReverseAccessorIterator<const CConstMatrixColumnAccessorExtended<MAT>,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a9e475c09814d9268b0399f7010236854">value_type</a>> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#adcd06cba8e7e8ca0a5e3a42b741555a2">const_reverse_iterator</a>; <a name="l00627"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#ae3f4b9640597eceb4e241f32721be2ae">00627</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#ae3f4b9640597eceb4e241f32721be2ae">begin</a>()<span class="keyword"> const </span>{ <a name="l00628"></a>00628 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,0); <a name="l00629"></a>00629 } <a name="l00630"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a513191e3d412b6456d1a8c1f8ec0269d">00630</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a513191e3d412b6456d1a8c1f8ec0269d">end</a>()<span class="keyword"> const </span>{ <a name="l00631"></a>00631 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4c8e1af1e0b9a7c85cd199a51efce73c">const_iterator</a>(*<span class="keyword">this</span>,howMany); <a name="l00632"></a>00632 } <a name="l00633"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a3c664c5b1b067f4167faea12ac4a10aa">00633</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a3c664c5b1b067f4167faea12ac4a10aa">rbegin</a>()<span class="keyword"> const </span>{ <a name="l00634"></a>00634 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,howMany-1); <a name="l00635"></a>00635 } <a name="l00636"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a8d47ca32e557299360998cba93979866">00636</a> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html" title="Template class for matrix accessor's iterators.">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a8d47ca32e557299360998cba93979866">rend</a>()<span class="keyword"> const </span>{ <a name="l00637"></a>00637 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a4ae4fd0f7c8a3ef1da6ee3cfaea21cce">const_reverse_iterator</a>(*<span class="keyword">this</span>,-1); <a name="l00638"></a>00638 } <a name="l00639"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#ad1103aeb125b9eea2b19eb28ede94ff6">00639</a> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#ad1103aeb125b9eea2b19eb28ede94ff6">size</a>()<span class="keyword"> const </span>{ <a name="l00640"></a>00640 <span class="keywordflow">return</span> howMany; <a name="l00641"></a>00641 } <a name="l00642"></a><a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a84245622bf5cfc47b67fc42dfdbac264">00642</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html#a84245622bf5cfc47b67fc42dfdbac264">resize</a>(<span class="keywordtype">size_t</span> N) { <a name="l00643"></a>00643 <span class="keywordflow">if</span> (N!=<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#a93d2639ed61a75711d623098efb74744">size</a>()) <span class="keywordflow">throw</span> <a class="code" href="classstd_1_1logic__error.html" title="STL class.">std::logic_error</a>(<span class="stringliteral">"Tried to resize a fixed-size vector"</span>); <a name="l00644"></a>00644 } <a name="l00645"></a>00645 }; <a name="l00646"></a><a class="code" href="namespacemrpt_1_1math.html#a2b0613bae6338e5d4143624be9bfc31b">00646</a> <span class="keyword">template</span><<span class="keyword">typename</span> MAT> <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html" title="A vector-like wrapper for a const Matrix for accessing the elements of a given column with a [] opera...">CConstMatrixColumnAccessorExtended<MAT></a> <a class="code" href="namespacemrpt_1_1math.html#ab6b936eae168fad493974377fffe2bd9">getColumnAccessor</a>(<span class="keyword">const</span> MAT &m,<span class="keywordtype">size_t</span> colIdx,<span class="keywordtype">size_t</span> offset,<span class="keywordtype">size_t</span> space=1) { <a name="l00647"></a>00647 <span class="keywordflow">return</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor_extended.html" title="A vector-like wrapper for a const Matrix for accessing the elements of a given column with a [] opera...">CConstMatrixColumnAccessorExtended<MAT></a>(m,colIdx,offset,space); <a name="l00648"></a>00648 } <a name="l00649"></a>00649 <a name="l00650"></a>00650 <a name="l00651"></a>00651 } <span class="comment">// End of namespace</span> <a name="l00652"></a>00652 } <span class="comment">// End of namespace</span> <a name="l00653"></a>00653 <a name="l00654"></a>00654 <a name="l00655"></a>00655 <span class="preprocessor">#endif</span> </pre></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>