Defined in header <ranges> | ||
---|---|---|
template< class T > concept bidirectional_range = ranges::forward_range<T> && std::bidirectional_iterator<ranges::iterator_t<T>>; | (since C++20) |
The bidirectional_range
concept is a refinement of range
for which ranges::begin
returns a model of bidirectional_iterator
.
#include <forward_list> #include <list> #include <ranges> #include <set> #include <unordered_set> int main() { static_assert( std::ranges::bidirectional_range<std::set<int>> and not std::ranges::bidirectional_range<std::unordered_set<int>> and std::ranges::bidirectional_range<std::list<int>> and not std::ranges::bidirectional_range<std::forward_list<int>> ); }
(C++20) | specifies a range whose iterator type satisfies forward_iterator (concept) |
(C++20) | specifies a range whose iterator type satisfies random_access_iterator (concept) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/bidirectional_range