<small id='GIHZ7'></small><noframes id='GIHZ7'>

  • <legend id='GIHZ7'><style id='GIHZ7'><dir id='GIHZ7'><q id='GIHZ7'></q></dir></style></legend>
  • <tfoot id='GIHZ7'></tfoot>

        <bdo id='GIHZ7'></bdo><ul id='GIHZ7'></ul>
        <i id='GIHZ7'><tr id='GIHZ7'><dt id='GIHZ7'><q id='GIHZ7'><span id='GIHZ7'><b id='GIHZ7'><form id='GIHZ7'><ins id='GIHZ7'></ins><ul id='GIHZ7'></ul><sub id='GIHZ7'></sub></form><legend id='GIHZ7'></legend><bdo id='GIHZ7'><pre id='GIHZ7'><center id='GIHZ7'></center></pre></bdo></b><th id='GIHZ7'></th></span></q></dt></tr></i><div id='GIHZ7'><tfoot id='GIHZ7'></tfoot><dl id='GIHZ7'><fieldset id='GIHZ7'></fieldset></dl></div>

        如何使用 std::valarray 存储/操作连续的二维数组

        时间:2023-09-15

          <tbody id='ySAXu'></tbody>

          <bdo id='ySAXu'></bdo><ul id='ySAXu'></ul>
          1. <tfoot id='ySAXu'></tfoot>

            <small id='ySAXu'></small><noframes id='ySAXu'>

                1. <legend id='ySAXu'><style id='ySAXu'><dir id='ySAXu'><q id='ySAXu'></q></dir></style></legend>
                  <i id='ySAXu'><tr id='ySAXu'><dt id='ySAXu'><q id='ySAXu'><span id='ySAXu'><b id='ySAXu'><form id='ySAXu'><ins id='ySAXu'></ins><ul id='ySAXu'></ul><sub id='ySAXu'></sub></form><legend id='ySAXu'></legend><bdo id='ySAXu'><pre id='ySAXu'><center id='ySAXu'></center></pre></bdo></b><th id='ySAXu'></th></span></q></dt></tr></i><div id='ySAXu'><tfoot id='ySAXu'></tfoot><dl id='ySAXu'><fieldset id='ySAXu'></fieldset></dl></div>
                  本文介绍了如何使用 std::valarray 存储/操作连续的二维数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  如何使用 std::valarray 来存储/操作二维数组?

                  How can I use a std::valarray to store/manipulate a 2D array?

                  我想看一个二维数组示例,其中元素通过行/列索引访问.像这样的伪代码:

                  I'd like to see an example of a 2D array with elements accessed by row/column indices. Something like this pseudo code:

                  matrix(i,j) = 42;
                  

                  一个如何初始化这样一个数组的例子也很好.

                  An example of how to initialize such an array would also be nice.

                  我已经知道 Boost.MultiArray、Boost.uBlas 和 Blitz++.

                  I'm already aware of Boost.MultiArray, Boost.uBlas, and Blitz++.

                  请随意回答为什么我不应该在我的用例中使用 valarray.但是,我希望多维数组的内存是一个连续的(列 x 行)块.没有 Java 风格的嵌套数组.

                  Feel free to answer why I shouldn't use valarray for my use case. However, I want the memory for the multidimensional array to be a contiguous (columns x rows) block. No Java-style nested arrays.

                  推荐答案

                  我的头顶:

                  template <class element_type>
                  class matrix
                  {
                  public:
                      matrix(size_t width, size_t height): m_stride(width), m_height(height), m_storage(width*height) {  }
                  
                      element_type &operator()(size_t row, size_t column)
                      {
                          // column major
                          return m_storage[std::slice(column, m_height, m_stride)][row];
                  
                          // row major
                          return m_storage[std::slice(row, m_stride, m_height)][column];
                      }
                  
                  private:
                      std::valarray<element_type> m_storage;
                      size_t m_stride;
                      size_t m_height;
                  };
                  

                  std::valarray 提供了许多有趣的方法来访问元素,通过切片、掩码、多维切片或间接表.参见 std::slice_arraystd::gslice_arraystd::mask_arraystd::indirect_array更多详情.

                  std::valarray provides many interesting ways to access elements, via slices, masks, multidimentional slices, or an indirection table. See std::slice_array, std::gslice_array, std::mask_array, and std::indirect_array for more details.

                  这篇关于如何使用 std::valarray 存储/操作连续的二维数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:给定宽度和高度,如何调整对象的 2D 矢量大小 下一篇:通过另一个指针删除指向类中多维数组的指针

                  相关文章

                  最新文章

                    <bdo id='b1kCp'></bdo><ul id='b1kCp'></ul>

                  <small id='b1kCp'></small><noframes id='b1kCp'>

                    <tfoot id='b1kCp'></tfoot>
                    1. <legend id='b1kCp'><style id='b1kCp'><dir id='b1kCp'><q id='b1kCp'></q></dir></style></legend>

                    2. <i id='b1kCp'><tr id='b1kCp'><dt id='b1kCp'><q id='b1kCp'><span id='b1kCp'><b id='b1kCp'><form id='b1kCp'><ins id='b1kCp'></ins><ul id='b1kCp'></ul><sub id='b1kCp'></sub></form><legend id='b1kCp'></legend><bdo id='b1kCp'><pre id='b1kCp'><center id='b1kCp'></center></pre></bdo></b><th id='b1kCp'></th></span></q></dt></tr></i><div id='b1kCp'><tfoot id='b1kCp'></tfoot><dl id='b1kCp'><fieldset id='b1kCp'></fieldset></dl></div>