C++使用tuple实现函数返回多个值

C++中可以使用引用传值的方法从一次函数调用中获得多个结果值。也可以使用std::tuple来像python或Lua中那样一次性返回多个值,以下是一个例子。

函数声明

函数传入一个点的值,返回以该点为中心的四个位置坐标是否可以放置:

1
std::tuple<bool, bool, bool, bool> checkPointCanPlace(const Point& centerPt);

函数实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14


std::tuple<bool, bool, bool, bool> checkPointCanPlace(const Point& centerPt)
{
bool ret0 = false;
bool ret1 = false;
bool ret2 = false;
bool ret3 = false;

//...

return std::make_tuple(ret0,ret1,ret2,ret3);
// return {ret0,ret1,ret2,ret3}; // c++17 version
}

函数调用

从返回的tuple中获取实际需要的各个值。

1
2
3
4
5
6
7
8
9
10

//...
auto tp = checkPointCanPlace(centerPt);
bool empty[4];
empty[0] = std::get<0>(tp);
empty[1] = std::get<1>(tp);
empty[2] = std::get<2>(tp);
empty[3] = std::get<3>(tp);

//...

REFERENCE

http://www.cplusplus.com/reference/tuple/