# std::permutable

< cpp‎ | iterator

定义于头文件 `<iterator>` |  |
template< class I > concept permutable = std::forward_iterator<I> && std::indirectly_movable_storable<I> && std::indirectly_swappable<I>; |  | (C++20 起)

概念 `permutable` 细化 `std::forward_iterator` ，添加通过移动与交换重排的要求。

### 语义要求

`I` 实现 `permutable` ，仅若其所蕴含的所有概念均得到实现。

### 参阅

sortable (C++20) | 指定重排序列为有序序列的算法的共用要求 (概念)
ranges::remove ranges::remove_if (C++20)(C++20) | 移除满足特定判别标准的元素 (niebloid)
ranges::unique (C++20) | 移除范围中的连续重复元素 (niebloid)
ranges::reverse (C++20) | 逆转范围中的元素顺序 (niebloid)
ranges::rotate (C++20) | 旋转范围中的元素顺序 (niebloid)
ranges::shuffle (C++20) | 随机重排范围中的元素 (niebloid)
ranges::partition (C++20) | 将范围中的元素分为二组 (niebloid)
ranges::stable_partition (C++20) | 将元素分成二组，同时保持其相对顺序 (niebloid)