Bra*_*ost 8 c++ structure return
我对我的几个作业问题感到困惑...你能使用return()从函数中返回多个数据项吗?一个函数只能返回一个值,除非它是一个指向数组的指针吗?
我相信答案是函数可以通过返回结构返回多个数据项.然后,返回指向数组的指针不是唯一的方法 - 如果这是一种方式?
但似乎有很多关于这个主题的讨论,所以我想确保我至少有基本的想法是正确的:你可以使用结构返回多个数据项但使用指针(我不明白)会使用记忆更有效率.它是否正确?
使用C++ 0x/C++ 11,您可以使用:
#include <string>
#include <iostream>
#include <tuple>
using namespace std;
tuple<int, unsigned, string, int> getValues()
{
return tuple<int, unsigned, string, int>(1, 2, "3", 4);
}
int main()
{
int a;
unsigned b;
string c;
int d;
tie(a, b, c, d) = getValues();
cout << a << ", " << b << ", " << c << ", " << d << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
用它编译
g++ tuple_test.cpp -std=c++0x -o tuple_test
Run Code Online (Sandbox Code Playgroud)
并且,如果您运行该程序,它将输出:
1, 2, 3, 4
Run Code Online (Sandbox Code Playgroud)
但是最好使用像这样的引用(我想说):
void getValues(int& a, unsigned& b, string& c, int& d)
{
a = 1;
b = 2;
c = "3";
d = 4;
}
int main()
{
...
getValues(a, b, c, d)
...
}
Run Code Online (Sandbox Code Playgroud)
这就是我没有仔细阅读的问题.
一个函数只能返回一个值,除非它是一个指向数组的指针吗?
是的,你只能返回1个单值,但是这个单值可以包含乘法值(struct,class,array).
您可以使用结构返回多个数据项,但使用指针(我不明白这一点)将更有效地使用内存.它是否正确?
真正.但是当你使用指针时,它取决于你如何使用它.当你动态分配它时,每个函数调用它都不会非常有效,你需要在使用后手动释放内存.当您使用全局数组/结构时,它将是高效的.但是当你多次调用函数时会给你带来问题.