如何解决如何从函数返回具有多个值的数组? C ++
我正在尝试从函数中返回某个数组,该函数在调用时会将值分配给该数组
该函数应如下所示:
int arr[10];
int values[10] = {1,2,3,4,5,6,7,8,9};
for (int i =0; i<10; i++)
{
arr[i] = values[i];
}
使用命名空间标准;
解决方法
据我所知,您不应该希望从函数中返回数组……就像从前一样。 相反,我要做的是将数组的名称传递给函数,并使其以所需的任何方式处理内容。就您而言,您只是在复制它们,这样就可以正常工作:
#include <iostream>
using namespace std;
void copy_array (const int [],int []); //function prototype
int main()
{
//Your arrays
int arr[10];
int values[10] = {1,2,3,4,5,6,7,8,9};
//Function call
copy_array(values,arr);
//Display contents of array
for(int i =0; i<10; i++){
cout << arr[i] << " " ;
}
return 0;
}
//Function definition
void copy_array (const int values[],int arr[]){
for (int i =0; i<10; i++){
arr[i] = values[i];
}
}
输出
1 2 3 4 5 6 7 8 9 0
此外,您的数组大小应该是一个常量整数变量。
,您可能不想像从没那样返回数组,因为这可能意味着很多无用的复制,这会降低程序速度,但是 您总是可以编写一个将值从一个数组复制到另一个数组的函数
#include <iostream>
void assignarray(int *dest,int *src,size_t size)
{
for (size_t i = 0; i < size; ++i)
{
dest[i] = src[i];
}
}
int main()
{
int arr[10];
int values[10] = {1,9,10};
assignarray(arr,values,sizeof(values) / sizeof(int));
for (size_t i = 0; i < 10; i++)
{
std::cout << values[i] << " ";
}
}
输出:
1 2 3 4 5 6 7 8 9 10
,
函数的返回类型不能为数组。
但是,数组可以是类的成员,而类可以是函数的返回类型,因此可以返回包装数组的类对象。标准库具有用于此类数组包装器的模板。它称为std::array
。
也就是说,返回数组(包装在类中)不一定是一个好的设计。有时最好让调用者创建容器-实际上,他们可以选择希望使用的容器类型-并将其传递给要填充的模板函数。这是一个接受范围的示例:
template<class Range>
void fill(Range& r) {
assert(std::ranges::distance(r) == 10);
int values[10] = {1,9};
int i = 0;
for (auto& e : r)
{
e = values[i++];
}
}
// example
int arr[10];
fill(arr);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。