brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 4e51014 Raw
52 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <algorithm>10 11// template <class RandomAccessIterator>12//     void13//     random_shuffle(RandomAccessIterator first, RandomAccessIterator last);14//15// template <class RandomAccessIterator, class RandomNumberGenerator>16//     void17//     random_shuffle(RandomAccessIterator first, RandomAccessIterator last,18//                    RandomNumberGenerator& rand);19 20//21//  In C++17, random_shuffle has been removed.22//  However, for backwards compatibility, if _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE23//  is defined before including <algorithm>, then random_shuffle will be restored.24 25// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE26// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS27 28#include <algorithm>29#include <cstddef>30#include <vector>31 32#include "test_macros.h"33 34struct gen35{36    std::ptrdiff_t operator()(std::ptrdiff_t n)37    {38        return n-1;39    }40};41 42 43int main(int, char**)44{45    std::vector<int> v;46    std::random_shuffle(v.begin(), v.end());47    gen r;48    std::random_shuffle(v.begin(), v.end(), r);49 50  return 0;51}52