从c++中的一个函数返回多个数组
returning multiple arrays from a function in c++
我有一个函数,我想在其中返回多个数组。我知道在c++中不返回数组,而是返回一个指向数组的指针。例如:
int* function(double array[])
但是,如果我需要返回多个数组(多个指向数组的指针?比如2-10),该怎么办。我想了一种方法。一种方法是通过引用将数组传递给void函数:
void function(int a[], int b[], double c[])
但是我们可能会传递很多数组作为输入。我可以将所有的输入数组打包到一个类中,通过引用传递该类,但这似乎是不必要的结构。做这件事的正确方法是什么?感谢
您可以使用std::vector
s而不是数组:
void function(vector<int> &a, vector<int> &b, vector<double> &c)
函数调用方只需生成三个向量并将其传入:
vector<int> a, b;
vector<double> c;
function(a, b, c);
并且函数可以以任何方式编辑向量(例如a.resize(10); a[0] = ...
),因为函数使用的向量与调用者传入的向量相同。这样,函数可以通过更改调用者传入的矢量来"返回"多个向量。
您可以使用vector of vectors
std::vector<std::vector<double>> my2Dvec;
std::vector<double> vec1, vec2, vec3;
my2dvec.push_back(vec1);
my2dvec.push_back(vec2);
my2dvec.push_back(vec3);
my2dvec[0].push_back(123.123);
my2dvec[1].push_back(456.456);
my2dvec[2].push_back(789.789);
std::cout << my2dvec[0][0] << std::endl; // 123.123
std::cout << my2dvec[1][0] << std::endl; // 456.456
std::cout << my2dvec[2][0] << std::endl; // 789.789
//----------------------------------------
注意:向量变得越来越慢,你投入的疯狂越多。因此,如果你有一个三维矢量,请注意的速度
尝试使用以下方法:
void Function(unsigned char*&dat1, unsigned char*&dat2, unsigned char*&dat3, ...)
{
dat1 = new unsigned char[10];
dat2 = new unsigned char[20];
dat3 = new unsigned char[30];
....
}
这将通过引用传递数组的指针。
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何仅为一个函数添加延迟
- 构造函数正在调用一个使用当前类类型的函数
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 如何创建函数管道,以便函数一个接一个地运行?
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 在c++中的复制构造函数/一个声明语句中的初始化的延续中使用chain方法
- C :基类调用自己的虚拟函数 - 一个反图案
- 如何在这个交换函数(一个单独的链表)中找到错误
- 两个相同的函数(一个使用模板模式,另一个不使用)
- 你怎么能一次给一个函数一个参数呢
- 为什么要做两个函数?(一个是非const,另一个是const)
- 当代码在其他地方使用时,如何保证函数一个接一个地被调用