int a;int b;int c;
如果我想要返回a,b和c。我应该怎么做? 我做了以下方式。但它给了我错误。
return a, b, c;
答案 0 :(得分:3)
如果我想要返回a,b和c。我应该怎么做?
选项1
定义struct
并返回struct
的对象。
struct MyStruct
{
int a;
int b;
int c;
};
现在你可以使用:
return MyStruct{10, 20, 30};
选项2
使用std::tuple
。
using MyData = std::tuple<int, int, int>;
然后
return MyData{10, 20, 30};
答案 1 :(得分:0)
虽然C ++不允许您返回多个值,但您可以返回std :: tuples,它们基本相同:
http://en.cppreference.com/w/cpp/utility/tuple
或者,如果你想要更明确一些,你可以返回一个结构。
或者,您可以通过引用获取“输出参数”并覆盖它:
void returnTwoThings(int& out1, int&out2) {
out1 = 42;
out2 = 16;
}
int a = 0;
int b = 0;
returnTwoThings(a, b);
// Prints "a: 42 b: 16"
std::cerr << "a: " << a << " b: " << b << std::endl;
答案 2 :(得分:0)
您可以返回包含所有三个整数的struct
struct IntTrio
{
int a;
int b;
int c;
}
IntTrio foo()
{
int a, b, c;
// ...
return {a, b, c};
}
您也可以返回std::tuple<int, int, int>
,虽然返回的大括号语法在C ++ 14中不起作用,但您需要std::make_tuple
或者您只需返回您喜欢的固定大小的容器,例如包含所有三个值的std::array<int, 3>
。
答案 3 :(得分:0)
在C ++或C中,您只能返回一个值/变量。如果要返回一个整数,则它应该只有一个'int'
。如果要返回多个值,请将这些值放在'struct'
(结构)中并更改函数的返回类型,然后继续返回'struct'。
struct StructureName
{
int a;
int b;
int c;
};
struct StructureName functionName(input_arguments)
{
struct StructureName var;
////your operations
var.a=10;
var.b=20;
var.c=30;
return var;
}
答案 4 :(得分:0)
从技术上讲,在C ++中,您只能从函数返回单个值。要返回更多值,您需要将它们包装在结构中。幸运的是,标准为此提供了一种类型:
您可以使用std::tuple
返回多个值。
std::tuple<int,int,int> getStuff()
{
return {2, 3, 4};
}
int main()
{
int x,y,z;
// Don't need to use a tuple object to catch the result.
// You can use std::tie to extract the values directly.
std::tie(x, y, z) = getStuff();
// If you don't want to use one of the values use `std::ignore`
std::tie(x, std::ignore, z) = getStuff();
// Or you can store them in a tuple.
auto tup = getStuff();
}