某些脚本语言(lua, python, ruby)看似能返回多值,实际上返回的不过是由多值组成的tuple(元组)而已,与C语言返回结构并无本质区别。
def max(a)
value = 0
index = 0
#compare code
value, index
end
#这里先装箱成tuple,然后再拆箱,分别赋值
max_value, index = max([1, 3, 4, 5, 2])
下面是C++的实现
#include <iostream>
#include <boost/tuple/tuple.hpp>
#include <boost/assign.hpp>
using namespace std;
using namespace boost;
using namespace assign;
tuple<int, int> f(const vector<int>& a)
{
int value, max_index;
//compare code
return make_tuple(value, max_index);
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> v;
v += 1, 3, 4, 5, 2;
int value, max_index;
tie(value, max_index) = f(v);
cout << value << max_index << endl;
return 0;
}