123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- namespace Eigen {
- /** \eigenManualPage TutorialSTL STL iterators and algorithms
- Since the version 3.4, %Eigen's dense matrices and arrays provide STL compatible iterators.
- As demonstrated below, this makes them naturally compatible with range-for-loops and STL's algorithms.
- \eigenAutoToc
- \section TutorialSTLVectors Iterating over 1D arrays and vectors
- Any dense 1D expressions exposes the pair of `begin()/end()` methods to iterate over them.
- This directly enables c++11 range for loops:
- <table class="example">
- <tr><th>Example:</th><th>Output:</th></tr>
- <tr><td>
- \include Tutorial_range_for_loop_1d_cxx11.cpp
- </td>
- <td>
- \verbinclude Tutorial_range_for_loop_1d_cxx11.out
- </td></tr></table>
- One dimensional expressions can also easily be passed to STL algorithms:
- <table class="example">
- <tr><th>Example:</th><th>Output:</th></tr>
- <tr><td>
- \include Tutorial_std_sort.cpp
- </td>
- <td>
- \verbinclude Tutorial_std_sort.out
- </td></tr></table>
- Similar to `std::vector`, 1D expressions also exposes the pair of `cbegin()/cend()` methods to conveniently get const iterators on non-const object.
- \section TutorialSTLMatrices Iterating over coefficients of 2D arrays and matrices
- STL iterators are intrinsically designed to iterate over 1D structures.
- This is why `begin()/end()` methods are disabled for 2D expressions.
- Iterating over all coefficients of a 2D expressions is still easily accomplished by creating a 1D linear view through `reshaped()`:
- <table class="example">
- <tr><th>Example:</th><th>Output:</th></tr>
- <tr><td>
- \include Tutorial_range_for_loop_2d_cxx11.cpp
- </td>
- <td>
- \verbinclude Tutorial_range_for_loop_2d_cxx11.out
- </td></tr></table>
- \section TutorialSTLRowsColumns Iterating over rows or columns of 2D arrays and matrices
- It is also possible to get iterators over rows or columns of 2D expressions.
- Those are available through the `rowwise()` and `colwise()` proxies.
- Here is an example sorting each row of a matrix:
- <table class="example">
- <tr><th>Example:</th><th>Output:</th></tr>
- <tr><td>
- \include Tutorial_std_sort_rows_cxx11.cpp
- </td>
- <td>
- \verbinclude Tutorial_std_sort_rows_cxx11.out
- </td></tr></table>
- */
- }
|