首页 > 解决方案 > 您将如何在 C++ 中创建一个对通用数组中的元素进行洗牌的方法

问题描述

我要在 C++ 中创建一个遗传数组类,并且在那个类中我要给它一个名为 shuffle 的方法,该方法可以随机(混合)该数组中的元素

我正在使用 Repl.it 编译我的代码,这是链接:

https://repl.it/@jamy155/Exam1

在我的代码中,我有 3 个文件。我的主课,我的基因阵列课,还有另外一个课。在我的数组类中,我有这个方法应该对数组进行洗牌

//Array.h//

#include <bits/stdc++.h>

using namespace std;

template <typename T> 
class Array {
Element<T>*data;
int size;

  public:
  // sets the size of the array 
  Array(int size){
    this->data = new Element<T>[size];
    this-> size = size;
  }

int length(){
  return this->size;
} 

// add Element to the  Array  

void InsertAt(int i,T value){
  data[i].set(value); 
}

// prints all element in Array 
void print(){
  for(int i = 0 ; i<this->size; i++){
   cout<<*data[i].get()<<" ";
  }

 void shuffler(Array arr[]){
 int n = this->size;

// To obtain a time-based seed
unsigned seed = 50;

// Shuffling our array
shuffle(arr, arr+n,default_random_engine(seed));   // shuffle method 

cout<<"\n";
for(int i=0;i<n;++i)
    cout<<arr[i].get(i)<<" ";
}
  };

这是我的主要课程。

#include <iostream>
#include "Array.h"

using namespace std;

int main() {
cout << "Hello World!\n";

Array<int> *arr = new Array<int>(7);



arr->InsertAt(0,6);
arr->InsertAt(1,1);
arr->InsertAt(2,10);
arr->InsertAt(3,3);
arr->InsertAt(4,3);
arr->InsertAt(5,5);
arr->InsertAt(6,4);

arr->print();
arr->shuffler(arr);   //error 

它给了我一个错误“退出,分段错误”。我做错了什么?

标签: c++arrays

解决方案


推荐阅读