我目前正在开发一个函数,我希望接受各种数组长度作为输入。例如,假设我有一个名为'sum'的函数。理想情况下,我想为这个函数提供一个大小不同的整数数组(即一个调用将加[1,2,3,4],另一个调用可以加[1,1,1]。
实现这一目标的最佳做法是什么?我曾尝试将函数声明为
int sum(int array[]);
但这会抛出编译器错误,指出必须指定参数数组的长度。
使用对标题为数组的指针的引用以及将用作迭代器的长度说明符会更好吗?如在
int sum(const int*& array, int lengthArray);
通过这种方法,我假设可以访问数组的值,然后能够使用数组的长度作为另一个参数循环遍历元素。但是,如果我的关于指针和引用的逻辑与“良好代码”一致,我不相信。
在我下班回家之前,我没有办法尝试这个,但是问题一直出现在我脑海中。所以我认为我会提出最佳实践的问题。
感谢任何帮助!
答案 0 :(得分:4)
作为C ++初学者,对可变长度数组使用std::vector
,对固定大小数组使用std::array
。
答案 1 :(得分:0)
一般情况下,我会像@Cheers and hth. - Alf那样给出相同的建议。
但是,我不确定我的关于指针和参考的逻辑是否正常,并且有良好的代码'。
实际上并不需要使用引用,只需编写
即可 int sum(const int* array, int lengthArray);
对要在函数内部更改这些内容的指针使用引用(例如,用于分配内存)。
答案 2 :(得分:-1)
您可以按照建议使用std::vector
,但如果您确实需要使用C数组,则可以执行此操作:
int sum(int* array, unsigned int len)
或只是
int sum(int* array)
如果使用特殊值(例如INT_MAX)来生成数组的末尾。在C数组和指针基本上是一回事。