Skip to content

Latest commit

 

History

History
60 lines (49 loc) · 1.81 KB

random_access_range.md

File metadata and controls

60 lines (49 loc) · 1.81 KB

random_access_range

  • ranges[meta header]
  • concept[meta id-type]
  • std::ranges[meta namespace]
  • cpp20[meta cpp]
namespace std::ranges {
  template<class T>
  concept random_access_range = bidirectional_range<T> && random_access_iterator<iterator_t<T>>;
}
  • bidirectional_range[link bidirectional_range.md]
  • random_access_iterator[link /reference/iterator/random_access_iterator.md]
  • iterator_t[link iterator_t.md]

概要

random_access_rangeは、イテレータがrandom_access_iteratorであるRangeを表すコンセプトである。

モデル

Trandom_access_rangeのモデルとなるのは、Tbidirectional_rangeのモデルであり、かつそのイテレータがrandom_access_iteratorのモデルである場合である。

#include <ranges>
#include <list>
#include <set>
#include <vector>

int main()
{
  // vectorはrandom_access_range
  static_assert(std::ranges::random_access_range<std::vector<int>>);

  // listはrandom_access_rangeではない
  static_assert(!std::ranges::random_access_range<std::list<int>>);

  // setはrandom_access_rangeではない
  static_assert(!std::ranges::random_access_range<std::set<int>>);
}
  • std::ranges::random_access_range[color ff0000]

出力

バージョン

言語

  • C++20

処理系

  • Clang: 13.0.0 [mark verified]
  • GCC: 10.1.0 [mark verified]
  • ICC: ??
  • Visual C++: 2019 Update 10 [mark verified]

参照