gpt4 book ai didi

C++ 数组问题,函数开始和结束

转载 作者:行者123 更新时间:2023-11-30 03:46:05 25 4
gpt4 key购买 nike

你好,我正在尝试编写一个脚本来选择一个随机数,然后再排除该数字。

#include <iostream>
#include <ctime>
#include <random>
#include <iterator>

using namespace std;

random_device rd; // non-deterministic generator
mt19937 gen(rd()); // to seed mersenne twister.
uniform_int_distribution<> dist(1, 52); // distribute results between 1 and 6 inclusive.

int testFunc(int cardArray, int cardArray2, int k) {
cardArray[k] = dist(gen);

copy(begin(cardArray), end(cardArray), begin(cardArray2));
cardArray2[k] = 0;

bool exists = find(begin(cardArray2), end(cardArray2), cardArray[k]) != end(cardArray2);

cardArray[k] = dist(gen);

cout << i + 1 << ": " << cardArray[k] << " " << exists << endl;

return 0;
}

int main()
{
int cardArray[52] = { 0 };
int cardArray2[52] = { 0 };
int i = 0;

for (int n = 0; cardArray[n] == 0 && n < 52; n++) {

cardArray[i] = dist(gen);

copy(begin(cardArray), end(cardArray), begin(cardArray2));
cardArray2[i] = 0;

bool exists = find(begin(cardArray2), end(cardArray2), cardArray[i]) != end(cardArray2);

cardArray[i] = dist(gen);

cout << i + 1 << ": " << cardArray[i] << " " << exists << endl;
i++;
}
cout << endl;
cin.ignore();
return 0;
}

到目前为止还存在一些问题。以下是错误:

no instance of overloaded function "end" matches the argument list

no instance of overloaded function "begin" matches the argument list

expression must have pointer - to - object type

我就是想不通哪里出了问题。如果它只是在 main 中,函数本身工作正常,但我需要能够调用它。

如果我需要发布更多信息,请告诉我。

最佳答案

您在函数中使用的是 int 而不是 int*

int testFunc(int cardArray, int cardArray2, int k)

应该是

int testFunc(int* cardArray, int* cardArray2, int k)

不幸的是,这将阻止 std::beginstd::end 工作,因为它们需要数组而不是指针。要将数组传递给函数,您需要通过引用来获取它们。为此,我们可以使用如下模板:

template<typename T, std::size_t N, std::size_t M>
int testFunc(T (&cardArray)[N], T (&cardArray2)[M], int k)

或者我们可以跳过使用原生数组并使用 std::arraystd::vector

关于C++ 数组问题,函数开始和结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34342585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com