微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从函数返回具有多个值的数组? C ++

如何解决如何从函数返回具有多个值的数组? 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 举报,一经查实,本站将立刻删除。