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

C++ Problems with arrays, begin and end in functions

本文关键字:函数 开始 结束 数组 问题 C++      更新时间:2023-10-16

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

#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;
}

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

没有重载函数的实例";结束";匹配参数列表

没有重载函数的实例";"开始";匹配参数列表

表达式必须具有指向对象的指针类型

我就是搞不清楚出了什么问题。如果函数只是在主函数中,它本身工作得很好,但我需要能够调用它

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

您正在接收函数中的int s,而不是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