c++實現一個函式返回多個返回值
阿新 • • 發佈:2021-08-31
可以通過tuple
來實現函式返回多個返回值,tuple
需要c++11支援
函式返回值型別可以宣告為
tuple<type1, type2, ...> function();
typei
是第i個返回值的型別
接收返回值可以用
auto [var1, var2, ...] = function();
vari
是第i個變數
以下是兩個例子
第一個例子
一個函式返回引數a取整b和a取餘b
#include <iostream> #include <tuple> using namespace std; tuple<int, int> divide(int a, int b) { return {a / b, a % b}; } int main() { auto [a, b] = divide(3, 2); cout << a << ' ' << b << " "; return 0; }
輸出結果為
1 1
第二個例子
一個函式返回一組數中的最大值和最小值
#include <bits/stdc++.h> using namespace std; tuple<int, int> max_min(std::vector<int> v) { int max_num(v[0]), min_num(v[0]); for (int i = 0, len = v.size(); i < len; ++i) { max_num = max(max_num, v[i]); min_num = min(min_num, v[i]); } return {max_num, min_num}; } int main() { mt19937 gen(time(0)); vector<int> v(10); for (int i = 0; i < 10; ++i) cout << (v[i] = gen() % 100 + 1) << " \n"[i == 9]; auto [max_num, min_num] = max_min(v); cout << max_num << " " << min_num << '\n'; return 0; }
輸出結果
83 48 66 44 48 3 54 10 62 42
83 3