最終更新日時(UTC):
が更新

履歴 編集

function
<mdspan>

std::mdspan::operator[](C++23)

template<class... OtherIndexTypes>
constexpr reference operator[](OtherIndexTypes... indices) const;  // (1)

template<class OtherIndexType>
constexpr reference operator[](span<OtherIndexType, rank()> indices) const;  // (2)

template<class OtherIndexType>
constexpr reference operator[](const array<OtherIndexType, rank()>& indices) const;  // (3)

概要

多次元インデクスを用いて要素にアクセスする。

テンプレートパラメータ制約

事前条件

(1) : パックIextents_type::index-cast(as_const(indices))としたとき、Iextents()の多次元インデクスであること。

効果

(1) : 以下と等価

return acc_.access(ptr_, map_(static_cast<index_type>(std::move(indices))...));

(2), (3) : 説明用のパラメータパックPis_same_v<make_index_sequence<rank()>, index_sequence<P...>> == trueとなるとき、以下と等価

return operator[](extents_type::index-cast(as_const(indices[P]))...);

#include <cassert>
#include <mdspan>

int main()
{
  int arr[] = {1, 2, 3, 4, 5, 6};
  // 静的要素数 2x3 の2次元配列ビュー
  std::mdspan<int, std::extents<size_t, 2, 3>> mat{arr};

  assert(map[0,0] == 1);
  assert(map[1,2] == 6);
}

出力

バージョン

言語

  • C++23

処理系

関連項目

  • C++23 添字演算子の多次元サポート

参照