gpt4 book ai didi

c++ - 从 C++ 函数返回多个值

转载 作者:IT老高 更新时间:2023-10-28 11:26:52 24 4
gpt4 key购买 nike

是否有从 C++ 函数返回多个值的首选方法?例如,假设一个函数将两个整数相除并返回商和余数。我经常看到的一种方法是使用引用参数:

void divide(int dividend, int divisor, int& quotient, int& remainder);

一种变体是返回一个值并通过引用参数传递另一个值:

int divide(int dividend, int divisor, int& remainder);

另一种方法是声明一个结构以包含所有结果并返回:

struct divide_result {
int quotient;
int remainder;
};

divide_result divide(int dividend, int divisor);

是这些方式中的一种通常是首选,还是有其他建议?

编辑:在实际代码中,可能有两个以上的结果。它们也可能属于不同的类型。

最佳答案

在 C++11 中,您可以:

#include <tuple>

std::tuple<int, int> divide(int dividend, int divisor) {
return std::make_tuple(dividend / divisor, dividend % divisor);
}

#include <iostream>

int main() {
using namespace std;

int quotient, remainder;

tie(quotient, remainder) = divide(14, 3);

cout << quotient << ',' << remainder << endl;
}

在 C++17 中:

#include <tuple>

std::tuple<int, int> divide(int dividend, int divisor) {
return {dividend / divisor, dividend % divisor};
}

#include <iostream>

int main() {
using namespace std;

auto [quotient, remainder] = divide(14, 3);

cout << quotient << ',' << remainder << endl;
}

或使用结构:

auto divide(int dividend, int divisor) {
struct result {int quotient; int remainder;};
return result {dividend / divisor, dividend % divisor};
}

#include <iostream>

int main() {
using namespace std;

auto result = divide(14, 3);

cout << result.quotient << ',' << result.remainder << endl;

// or

auto [quotient, remainder] = divide(14, 3);

cout << quotient << ',' << remainder << endl;
}

关于c++ - 从 C++ 函数返回多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/321068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com