我必须在c ++中执行一个函数,通过从引用传递它们来返回2个数组。 我不知道,似乎没有人也有。 你能帮我写一个例子吗? 我很想做
int *vettore=new int[5];
return vettore
买它只返回一个。 Tnx提前。
答案 0 :(得分:3)
让我们暂时忘掉数组,因为那是另一回事。让我们专注于返回两种简单类型,例如:返回两个整数。
显然这不会起作用(因为......不是python):
int, int foo()
{
int a = ...
int b = ...
return a, b;
}
那么如果你想在C ++中返回多个值,你会选择哪些选项?
你可以"捆绑"您在类中的值,如果有意义,可以为它们创建一个新类,或者只使用std::pair
或std::tuple
:
std::pair<int, int> foo()
{
int a = ...;
int b = ...;
return {a, b}
}
您可以通过引用传递参数,从而可以从外部修改函数对象。 E.g:
void foo(int& a, int& b)
{
a = ...;
b = ...;
}
我认为这就是你老师的意思&#34;通过引用传递&#34;。
回答这个问题很棘手,因为arrays
并不清楚你的意思,并且不鼓励使用某些含义。
我将从最推荐的,到被认为是不良的做法甚至是错误的开始:
std::vector
用于在C ++中表示数组的事实类型应始终为std::vector
。因此,您通过引用返回的要求可能意味着:
void foo(std::vector<int>& v1, std::vector<int&>& v2);
std::array
或者,如果在编译时已知数组的大小:
void foo(std::array<int, 24>& a1, std::array<int, 24>& a2);
好的,现在我们处于沮丧的境地。 不要这样做,除非安抚不合理的老师或课程:
void foo(int* &v1, int* &v2)
{
v1 = new int[11];
v2 = new int[24];
...
}
void foo(int (&a)[11], int (&a2)[24]);
答案 1 :(得分:0)
你可以这样做:
return std::make_pair(array1,array2);
您需要#include <utility>
要访问数组,请使用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
}
输出:
2
答案 2 :(得分:0)
您可以通过返回C / C ++中可接受的结构节点指针来实现。
以下是节点的示例代码:
func test1() {
action1()
logoutAction()
}
func test2() {
action2()
logoutAction()
}
func test3() {
action3()
logoutAction()
}
来到这个职能部门:
struct node {
int a[100];
int b[100];
};
在main中:您可以按如下方式访问数组:
struct node* fun() {
struct node* ptr;
// write your code
return ptr;
}
希望有所帮助