C++数组的问题,从函数开始和结束
C++ Problems with arrays, begin and end in functions
你好,我正在尝试编写一个脚本,该脚本选择一个随机数,然后排除该数。
#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::begin
和std::end
工作,因为它们需要一个数组而不是指针。要将数组传递给函数,您需要通过引用获取它们。要做到这一点,我们可以使用这样的模板:
template<typename T, std::size_t N, std::size_t M>
int testFunc(T (&cardArray)[N], T (&cardArray2)[M], int k)
或者,我们可以跳过使用本机数组,使用std::array
或std::vector
相关文章:
- 为什么 -mmacosx-version-min=10.10 不阻止使用标记为从 10.11 开始的函数?
- 如何显示函数开始、结束行和函数体?
- 跳转到函数从某些代码部分开始
- 编写一个函数,在开始和结束处添加括号,使所有括号匹配并返回
- 如何将从第 2 个字符开始的字符串作为函数中的参数传递以进行递归,并约束数据 tiee 是函数中的字符串?
- 范围的递归函数(从范围 v3 开始)导致编译发散:为什么
- 如果绝对没有调用成员函数,是否允许使用不完整类型的向量?如果是这样,从什么时候开始
- 将数组作为函数参数传递,并在其上调用开始/结束方法
- 初始化函数中的静态变量,而不是在文件开始时
- C++ 指针上的开始/结束 (arr) - 调用 'begin(int**&)' 没有匹配函数
- 如何在c/c++中从不同的函数而不是main()开始执行程序
- 如何验证pthread函数是否开始执行
- 我正试图使用数组从头开始创建一个strtok函数
- 从另一个函数中获取char[]的好方法.用c/c++开始思考
- 在函数开始时测试并返回,而不是嵌套的 if
- C++数组的问题,从函数开始和结束
- 迭代一个STL容器,而不是从.begin()函数开始
- 为什么我的函数开始返回nan
- 是否有可能防止g++在跨优化级别的函数开始时推入epb并保存esp ?
- 条件返回到函数开始处