Sophie

Sophie

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

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>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> &gt; <b>C++ reference</b> </div>
<div align="right">
<a href="index.html"><img border="0" src="mrpt_logo.png" alt="MRPT logo"></a>
</div>
<!-- Generated by Doxygen 1.7.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li 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&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;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  &lt;jlblanco@ctima.uma.es&gt;                     |</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 &lt;http://www.gnu.org/licenses/&gt;.         |</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 &lt;<a class="code" href="utils__defs_8h.html">mrpt/utils/utils_defs.h</a>&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;<a class="code" href="math__frwds_8h.html">mrpt/math/math_frwds.h</a>&gt;</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>&lt;<span class="keyword">typename</span> T,<span class="keyword">typename</span> U,<span class="keywordtype">bool</span> UIsObject&gt; <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&#39;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>&lt;<span class="keyword">typename</span> U,<span class="keywordtype">bool</span> B&gt; <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>&lt;<span class="keyword">typename</span> U&gt; <span class="keyword">class </span>MatrixWrapper&lt;U,true&gt;        {
<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 &quot;CMatrixTemplate&quot; for storing &quot;objects&quot; at each matrix entry...">CMatrixTemplateObjects&lt;U&gt;</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>&lt;<span class="keyword">typename</span> U&gt; <span class="keyword">class </span>MatrixWrapper&lt;U,false&gt;       {
<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&lt;U&gt;</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>&lt;<span class="keyword">typename</span> T,<span class="keyword">typename</span> U,<span class="keywordtype">bool</span> UIsObject,<span class="keyword">typename</span> FunctionType&gt; <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&lt;T,U,UIsObject&gt;</a> &amp;o, FunctionType fun,<span class="keywordtype">size_t</span> e1,<span class="keywordtype">size_t</span> e2,<span class="keyword">const</span> T &amp;T1,<span class="keyword">const</span> T &amp;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&#39;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>&lt;<span class="keyword">typename</span> A,<span class="keyword">typename</span> T&gt; <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 &amp;<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 &amp;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>(&amp;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 &amp;<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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</a> &amp;<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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</a> &amp;<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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</a> &amp;<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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</a> &amp;<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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</a> &amp;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 &amp;<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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</a> &amp;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)&amp;&amp;(<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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</a> &amp;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&#39;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>&lt;<span class="keyword">typename</span> A,<span class="keyword">typename</span> T&gt; <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 &amp;<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 &amp;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>(&amp;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 &amp;<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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</a> &amp;<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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</a> it=*<span class="keyword">this</span>;
<a name="l00159"></a>00159                                         ++*<span class="keyword">this</span>;        <span class="comment">//Yes, that&#39;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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</a> &amp;<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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</a> it=*<span class="keyword">this</span>;
<a name="l00168"></a>00168                                         --*<span class="keyword">this</span>;        <span class="comment">//Yes, that&#39;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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</a> &amp;<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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</a> it=*<span class="keyword">this</span>;
<a name="l00177"></a>00177                                         it+=off;        <span class="comment">//Yes, that&#39;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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</a> &amp;<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&#39;s iterators.">AccessorIterator&lt;A,T&gt;</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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</a> it=*<span class="keyword">this</span>;
<a name="l00186"></a>00186                                         it-=off;        <span class="comment">//Yes, that&#39;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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</a> &amp;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 &amp;<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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</a> &amp;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)&amp;&amp;(&amp;<a class="code" href="classmrpt_1_1math_1_1detail_1_1_reverse_accessor_iterator.html#a78fd29cf073fb69613646628ae8cdfa7">base</a>==&amp;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&#39;s iterators.">ReverseAccessorIterator&lt;A,T&gt;</a> &amp;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&#39;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> &lt;<span class="keyword">typename</span> MAT&gt;
<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&lt;MAT&gt;</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 &amp;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>(&amp;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&lt;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> &amp;<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&lt;CMatrixRowAccessor&lt;MAT&gt;,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">value_type</a>&gt; <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&lt;const CMatrixRowAccessor&lt;MAT&gt;,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">value_type</a>&gt; <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&lt;CMatrixRowAccessor&lt;MAT&gt;,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">value_type</a>&gt; <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&lt;const CMatrixRowAccessor&lt;MAT&gt;,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor.html#ab5073337d6f6cdd7c2ba737e12f28162">value_type</a>&gt; <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>-&gt;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>-&gt;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>-&gt;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>-&gt;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">&quot;Tried to resize a fixed-size vector&quot;</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>&lt;<span class="keyword">typename</span> MAT&gt; <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&lt;MAT&gt;</a> <a class="code" href="namespacemrpt_1_1math.html#a5ea466ba07ea389dd3bb90326b0ac255">getRowAccessor</a>(MAT &amp;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&lt;MAT&gt;</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&#39;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>&lt;<span class="keyword">class</span> MAT&gt;
<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&lt;MAT&gt;</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 &amp;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>(&amp;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&lt;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> &amp;<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&lt;CMatrixRowAccessorExtended&lt;MAT&gt;,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">value_type</a>&gt; <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&lt;const CMatrixRowAccessorExtended&lt;MAT&gt;,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">value_type</a>&gt; <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&lt;CMatrixRowAccessorExtended&lt;MAT&gt;,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">value_type</a>&gt; <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&lt;const CMatrixRowAccessorExtended&lt;MAT&gt;,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_row_accessor_extended.html#afb6048d331b0b1075d670133f53d5030">value_type</a>&gt; <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&#39;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&#39;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&#39;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&#39;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&#39;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&#39;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&#39;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&#39;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">&quot;Tried to resize a fixed-size vector&quot;</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>&lt;<span class="keyword">typename</span> MAT&gt; <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&lt;MAT&gt;</a> <a class="code" href="namespacemrpt_1_1math.html#a5ea466ba07ea389dd3bb90326b0ac255">getRowAccessor</a>(MAT &amp;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&lt;MAT&gt;</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&#39;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>&lt;<span class="keyword">class</span> MAT&gt;
<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&lt;MAT&gt;</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 &amp;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>(&amp;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&lt;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&lt;const CConstMatrixRowAccessor&lt;MAT&gt;,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a04c3a6b2cc521cbbf229fb4c3473b12e">value_type</a>&gt; <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&lt;const CConstMatrixRowAccessor&lt;MAT&gt;,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_row_accessor.html#a04c3a6b2cc521cbbf229fb4c3473b12e">value_type</a>&gt; <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&#39;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&#39;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>-&gt;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&#39;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>-&gt;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&#39;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>-&gt;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">&quot;Tried to resize a fixed-size vector&quot;</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>&lt;<span class="keyword">typename</span> MAT&gt; <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&lt;MAT&gt;</a> <a class="code" href="namespacemrpt_1_1math.html#a5ea466ba07ea389dd3bb90326b0ac255">getRowAccessor</a>(<span class="keyword">const</span> MAT &amp;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&lt;MAT&gt;</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&#39;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>&lt;<span class="keyword">class</span> MAT&gt;
<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&lt;MAT&gt;</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 &amp;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>(&amp;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&lt;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&lt;const CConstMatrixRowAccessorExtended&lt;MAT&gt;,<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>&gt; <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&lt;const CConstMatrixRowAccessorExtended&lt;MAT&gt;,<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>&gt; <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&#39;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&#39;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&#39;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&#39;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">&quot;Tried to resize a fixed-size vector&quot;</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>&lt;<span class="keyword">typename</span> MAT&gt; <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&lt;MAT&gt;</a> <a class="code" href="namespacemrpt_1_1math.html#a5ea466ba07ea389dd3bb90326b0ac255">getRowAccessor</a>(<span class="keyword">const</span> MAT &amp;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&lt;MAT&gt;</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> &lt;<span class="keyword">typename</span> MAT&gt; <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&lt;MAT&gt;</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 &amp;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>(&amp;mat), m_colInd(colIdx) { <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(colIdx&lt;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> &amp;<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&lt;CMatrixColumnAccessor&lt;MAT&gt;,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">value_type</a>&gt; <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&lt;const CMatrixColumnAccessor&lt;MAT&gt;,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">value_type</a>&gt; <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&lt;CMatrixColumnAccessor&lt;MAT&gt;,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">value_type</a>&gt; <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&lt;const CMatrixColumnAccessor&lt;MAT&gt;,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor.html#a286ecf0dfe6bfa87823d2faa9d9d1942">value_type</a>&gt; <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>-&gt;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>-&gt;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>-&gt;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>-&gt;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>-&gt;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">&quot;Tried to resize a fixed-size vector&quot;</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>&lt;<span class="keyword">typename</span> MAT&gt; <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&lt;MAT&gt;</a> <a class="code" href="namespacemrpt_1_1math.html#ab6b936eae168fad493974377fffe2bd9">getColumnAccessor</a>(MAT &amp;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&lt;MAT&gt;</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>&lt;<span class="keyword">typename</span> MAT&gt;
<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&lt;MAT&gt;</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 &amp;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>(&amp;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&lt;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> &amp;<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&lt;CMatrixColumnAccessorExtended&lt;MAT&gt;,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">value_type</a>&gt; <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&lt;const CMatrixColumnAccessorExtended&lt;MAT&gt;,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">value_type</a>&gt; <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&lt;CMatrixColumnAccessorExtended&lt;MAT&gt;,<a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">value_type</a>&gt; <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&lt;const CMatrixColumnAccessorExtended&lt;MAT&gt;,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_column_accessor_extended.html#a4d1568b0aec2b88e3267f0da98194dfb">value_type</a>&gt; <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&#39;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&#39;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&#39;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&#39;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&#39;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&#39;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&#39;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&#39;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">&quot;Tried to resize a fixed-size vector&quot;</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>&lt;<span class="keyword">typename</span> MAT&gt; <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&lt;MAT&gt;</a> <a class="code" href="namespacemrpt_1_1math.html#ab6b936eae168fad493974377fffe2bd9">getColumnAccessor</a>(MAT &amp;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&lt;MAT&gt;</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>&lt;<span class="keyword">class</span> MAT&gt;
<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&lt;MAT&gt;</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 &amp;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>(&amp;mat),m_colInd(colIdx)    {
<a name="l00569"></a>00569                                 <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(colIdx&lt;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&lt;const CConstMatrixColumnAccessor&lt;MAT&gt;,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#ad9a257136fd56b9f086093b2bcc37e26">value_type</a>&gt; <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&lt;const CConstMatrixColumnAccessor&lt;MAT&gt;,<span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_const_matrix_column_accessor.html#ad9a257136fd56b9f086093b2bcc37e26">value_type</a>&gt; <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&#39;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&#39;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>-&gt;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&#39;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>-&gt;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&#39;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>-&gt;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">&quot;Tried to resize a fixed-size vector&quot;</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>&lt;<span class="keyword">typename</span> MAT&gt; <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&lt;MAT&gt;</a> <a class="code" href="namespacemrpt_1_1math.html#ab6b936eae168fad493974377fffe2bd9">getColumnAccessor</a>(<span class="keyword">const</span> MAT &amp;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&lt;MAT&gt;</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>&lt;<span class="keyword">typename</span> MAT&gt;
<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&lt;MAT&gt;</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 &amp;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>(&amp;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&lt;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&lt;const CConstMatrixColumnAccessorExtended&lt;MAT&gt;,<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>&gt; <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&lt;const CConstMatrixColumnAccessorExtended&lt;MAT&gt;,<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>&gt; <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&#39;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&#39;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&#39;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&#39;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">&quot;Tried to resize a fixed-size vector&quot;</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>&lt;<span class="keyword">typename</span> MAT&gt; <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&lt;MAT&gt;</a> <a class="code" href="namespacemrpt_1_1math.html#ab6b936eae168fad493974377fffe2bd9">getColumnAccessor</a>(<span class="keyword">const</span> MAT &amp;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&lt;MAT&gt;</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>