引数の 2 つのポインター、配列の先頭と末尾で呼び出される関数があります。私の関数は、条件に一致する要素を終了ポインタから開始ポインタまで検索します。
前方に反復しようとしていた場合、これを行うことができますfind_if
が、逆に反復する必要があります。STLにはこれに対する規定がありますか?
注: これは for ループで簡単に実行できます。私が探しているのは、よりエレガントなソリューションです。
引数の 2 つのポインター、配列の先頭と末尾で呼び出される関数があります。私の関数は、条件に一致する要素を終了ポインタから開始ポインタまで検索します。
前方に反復しようとしていた場合、これを行うことができますfind_if
が、逆に反復する必要があります。STLにはこれに対する規定がありますか?
注: これは for ループで簡単に実行できます。私が探しているのは、よりエレガントなソリューションです。
はい、 std::reverse_iteratorと呼ばれます。例:
template<typename RandomAccessIterator>
void reverse_sort(RandomAccessIterator begin, RandomAccessIterator end) {
typedef std::reverse_iterator<RandomAccessIterator> r_iter_t;
std::sort(r_iter_t(end), r_iter_t(begin));
}
int main() {
int arr[] = { 1, 2, 3 };
reverse_sort(std::begin(arr), std::end(arr));
for(auto i : arr) std::cout << i << "\n";
}
与える
3
2
1