我如何在C ++中将给定大小的数组改组并与另一个相同大小的数组进行比较

时间:2019-04-09 20:38:28

标签: c++ c++14

假设我有一个数组A = {212,323,234,567,545,765},现在我想改组这个数组,以便将值随机排列

就像洗牌后一样,可以是A = {234,765,212,545,323,567}

我不知道如何解决此问题的任何线索?

2 个答案:

答案 0 :(得分:3)

选中std::shufflestd::equal。文档中有一些示例可以为您提供帮助。

答案 1 :(得分:0)

对于基本的改组,您想使用std::shuffle

#include <algorithm>
#include <array>
#include <random>
#include <iterator>
#include <iostream>

int main()
{
    // Create mersenne twister RNG
    std::random_device rd;
    std::mt19937 g(rd());
    // Initialize Array A
    std::array<int, 6u> A{ 212,323,234,567,545,765 };
    // Print A
    std::copy(A.begin(), A.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << "\n";
    // Shuffle A
    std::shuffle(A.begin(), A.end(), g);
    // Print A
    std::copy(A.begin(), A.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << "\n";
}