返回2个数组(通过引用传递)的函数 我必须在C++中执行一个函数,通过引用从2个数组返回它们。 我不知道,似乎没有人知道。 你能帮我写个例子吗? 我想该怎么办 int *vettore=new int[5]; return vettore
买了它只会退回一个。返回2个数组(通过引用传递)的函数 我必须在C++中执行一个函数,通过引用从2个数组返回它们。 我不知道,似乎没有人知道。 你能帮我写个例子吗? 我想该怎么办 int *vettore=new int[5]; return vettore,c++,arrays,C++,Arrays,买了它只会退回一个。 Tnx。让我们暂时忘记阵列,因为这是另一个问题包。让我们集中精力返回两个简单类型,例如返回两个整数 显然这不起作用,因为。。。不是python: int, int foo() { int a = ... int b = ... return a, b; }
Tnx。让我们暂时忘记阵列,因为这是另一个问题包。让我们集中精力返回两个简单类型,例如返回两个整数 显然这不起作用,因为。。。不是python:
int, int foo()
{
int a = ...
int b = ...
return a, b;
}
<如果你想在C++中返回多个值?,你会选择什么选项?
备选案文1。退课
您可以将您的值绑定到一个类中,或者为它们创建一个新的类(如果有意义的话),或者简单地使用std::pair或std::tuple:
我想这就是你们老师所说的“参考传递”的意思
好的,那么阵列呢?
这是一个很难回答的问题,因为不清楚数组是什么意思,并且不鼓励使用某些含义
我将从最推荐的开始,到被认为是不好的做法,甚至是错误的做法:
向量
C++中表示数组的事实类型应该始终是STD::vector。因此,您通过引用返回的要求可能意味着:
void foo(std::vector<int>& v1, std::vector<int&>& v2);
C指针
好的,现在我们在沮丧的领域。不要这样做,除非是为了安抚不合理的老师或课程:
void foo(int* &v1, int* &v2)
{
v1 = new int[11];
v2 = new int[24];
...
}
C阵列
您可以这样做:
return std::make_pair(array1,array2);
你需要包括
要访问阵列,请使用pair.first或pair.second
例如:
#include <utility> //std::pair
#include <iostream> //std::cout
std::pair<int*,int*> returnpair(){
int arr1[3] = {1,2,3};
int arr2[3] = {4,5,6};
return std::make_pair(arr1,arr2);
}
int main(){
std::pair<int*,int*> pair= returnpair();
std::cout<<pair.first[1]; //access 2nd member of arr1
}
参考:
您可以通过返回在C/C++中可以接受的结构节点指针来实现这一点 以下是节点的示例代码:
struct node {
int a[100];
int b[100];
};
来参加活动:
struct node* fun() {
struct node* ptr;
// write your code
return ptr;
}
总而言之:您可以按如下方式访问阵列:
struct node* ptr=fun();
ptr->a // is the first array
ptr->b // is the second array
希望能有帮助是的,我不知道怎么翻第二个。这就是我通常使用数组返回的方式。但是我只能用一个。请显示完整的代码,并清楚地询问您想要什么,或者将一对指针返回到两个数组。看这里,似乎没有人也有——如果你的老师不知道怎么做,那么他们打算怎么给你评分?你不使用的原因是什么?
#include <utility> //std::pair
#include <iostream> //std::cout
std::pair<int*,int*> returnpair(){
int arr1[3] = {1,2,3};
int arr2[3] = {4,5,6};
return std::make_pair(arr1,arr2);
}
int main(){
std::pair<int*,int*> pair= returnpair();
std::cout<<pair.first[1]; //access 2nd member of arr1
}
2
struct node {
int a[100];
int b[100];
};
struct node* fun() {
struct node* ptr;
// write your code
return ptr;
}
struct node* ptr=fun();
ptr->a // is the first array
ptr->b // is the second array