我正在尝试使用c ++编程来实现我已经在java和Python中实现的类。我试图比较这个特定班级在三种语言中的表现。基本上该类所做的是生成随机数,之后它将在列表中存储一系列唯一的随机数,然后返回列表,稍后将其发送到另一个函数进行处理。但是我仍然坚持返回此列表。我创建了一个包含必要的类声明的头文件,并将实现放在另一个源文件中。我试图在我的main方法中运行这个程序但是在成功编译之后,程序只运行到无穷大而不执行返回的方法并且没有显示错误。我必须补充一点,我刚开始学习c ++。
以下是我的代码摘录:
标题文件:
index.html
源文件:
#ifndef LOTTOGENERATORHEADER_H
#define LOTTOGENERATORHEADER_H
#include<list>
#include<map>
#include<ctime>
#include<algorithm>
#include<iterator>
class LottoGenerator {
std::list<int> lottoListReference;
public:
LottoGenerator(void);
int generateRandomNumber(int maxNum);
std::list<int> generateLottoNumbers(int, int);
void lottoNumberOccurrences(std::map<int, int> &seriesContainer, std::list<int> &LottoNumbers);
std::map<int, int> sortedByValue(std::map<int, int> &sortedmap);
};
#endif
/* LOTTOGENERATORHEADER_H */
主要方法:
#include "LottoGeneratorHeader.h"
#include<iostream>
LottoGenerator::LottoGenerator() {
srand(time(NULL));
}
int LottoGenerator::generateRandomNumber(int maxNum) {
return rand() % maxNum + 1;
}
std::list<int> LottoGenerator::generateLottoNumbers(int noOfBalls, int maxLottoNumber) {
std::cout<<"set me"<<"\n";
if (!LottoGenerator::lottoListReference.empty())
LottoGenerator::lottoListReference.clear();
int rand = 0;
for (int i = 0; i < noOfBalls; i++) {
rand = generateRandomNumber(maxLottoNumber);
if (std::find(LottoGenerator::lottoListReference.begin(), LottoGenerator::lottoListReference.end(), rand) != LottoGenerator::lottoListReference.end()) {
LottoGenerator::lottoListReference.push_back(rand);
} else {
while (std::find(LottoGenerator::lottoListReference.begin(), LottoGenerator::lottoListReference.end(), rand) == LottoGenerator::lottoListReference.end()) {
rand = generateRandomNumber(maxLottoNumber);
}
LottoGenerator::lottoListReference.push_back(rand);
}
}
return LottoGenerator::lottoListReference;
}
NB :我的实施有意在所有三种语言中尽可能相似