c++ - 您将如何在 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
它给了我一个错误“退出,分段错误”。我做错了什么?
解决方案
推荐阅读
- javascript - [Vue 警告]:属性或方法“onSave”未在实例上定义,但在渲染期间引用
- java - 在 Java 中将 20 个随机宝藏插入 10 x 10 网格中
- python - 没有出现图像的 Tkinter 按钮
- python - Python - 通过最小二乘法求权重
- python - 在函数中结合 eval() 和 return
- java - WebSphere 应用程序服务器中的 MTOM 附件大小限制
- javascript - JavaScript:我怎样才能使这个 console.log() 工作?
- mysql - Node.js Mysql 几分钟后停止查询
- python - Tkinter 标签未显示所有假定的输出
- json - 颤振http卡住了