函数,返回多个数组
function which returns multiple arrays
我想写一个C++函数,它读取一个文件(例如一个有2列或更多列的表),并将每列作为数组返回。我该怎么做?如何从主程序中的这个函数中读取数组?
我可以对一个有1列(1个数组)的文件执行此操作,这样函数就会返回一个指针。但是,我如何返回许多数组(或指向这些数组的指针),然后在主程序中读取它们呢?
示例"table.txt":
1 10
2 20
3 30
4 40
5 50
看起来您拥有的是键值对。最好的做法是从函数中返回一个std::map。以下是它的样子:
std::map<int, int> parseFile()
{
}
在解析文件时,将键值对作为std::对添加到std::映射中。
您可以使用包含向量的向量。基本上,您可以将每一行分解为适当的单词,并将它们推到向量容器中相应列的右向量上。
在调用程序中声明数组,并通过参数传入。
void fill(int *a, int *b, int *c) {
a[0] = b[0] = c[0] = 1;
//...
}
void func() {
int a[10], b[10], c[10];
fill(a, b, c);
//...
}
或者,您可以定义一个具有所有元素类型的结构,并返回这些结构的单个数组。
由于您谈论的是指针(在我看来,比C++更像C…),您可以返回相同的单个指针,但该指针必须指向包含两个数组指针的结构。
类似于:
typedef struct _two_arrays{
/*Assuming it is an array of ints*/
int *arr_1;
int *arr_2;
}TwoArr;
TwoArr *yourFunction(/*Argss*/){
TwoArr *arrs = (TwoArr*)malloc(sizeOf(TwoArr));
/*Columns to your arrays ...*/
arrs->arr_1 = yourArr1;
arrs->arr_2 = yourArr2;
return arrs;
}
或者,以c++的方式,您可以使用std::vector<std::vector<YOUR_TYPE>>
我假设您是C++新手。矢量是一种数据结构,您可以使用它来代替数组。您可以在此处找到更多信息[]http://www.cplusplus.com/reference/vector/vector/.在不使其复杂化的情况下,您可以在主函数中声明两个向量cloum1和column2(您可以将它们视为无限大小的数组),并调用loadMatrixFromFile,如下所示:
vector<int> column1,vector<int> column2;
if(!loadMatrixFromFile(inputFile,column1,column2))
{
cerr << "Uh oh, failed in loading matrix form file" << endl;
exit(1);
}
并创建如下函数:
bool loadMatrixFromFile(ifstream & inputFile,vector<int> & col1,vector<int> & col2)
{
while (inputFile)
{
string line;
getline(inputFile,line);
int n;
stringstream tempLine(line);
for (int i=0;i<2;i++)
{
tempLine>>n;
if (i==0)
col1.push_back(n);
else
col2.push_back(n);
}
}
return true;
}
执行该函数后,向量column1和column2将包含文件中的列值。
如果您对使用向量感到满意,那么您可以使用向量中的向量(如数组中的向量)来创建可以容纳每列向量的向量,而不是为每列声明一个向量。
- 为什么 C++ 中的字符数组返回其项目而不是地址?
- C++ bool 数组返回 1 或 0 以外的值
- C++ ostream 从对象数组返回数据
- 类中的重载运算符 [],因此它可以从模板类中的数组返回对象
- 指向对象的指针数组返回jibberish
- 具有基本结构的结构数组返回错误的答案
- 数组返回乐趣 movie_check()
- C++从字符数组返回类型为T的指针
- C++-将数组返回到主函数,并将数组传递给另一个函数
- C++:如何通过异常处理从越界数组返回值
- 整数数组返回类型
- 从字符串流复制到 char * 数组返回为函数参数
- C++函数从对象数组返回对象的副本.这是默认行为吗?
- 8字节数组返回长(C#到C++)
- 向c#数组返回一个字符数组c++
- 从并行数组返回值,并在以后的函数中使用这些值
- 将c++中的浮点数数组返回给Python
- 如何在gsoap中使字符串数组返回值
- 将两个字符相乘并向数组返回int
- C++套接字 - 从结构数组返回单个地址信息