📜  c++ 返回多个值 - C++ (1)

📅  最后修改于: 2023-12-03 14:39:56.172000             🧑  作者: Mango

C++ 返回多个值

在C++中,我们可以使用多种方法来返回多个值。以下是一些常用的方法。

返回结构体

结构体是C++中存储相关数据的一种方式。我们可以为一个结构体定义多个属性,然后返回这个结构体,从而实现返回多个值。

下面是一个例子:

struct Point {
    int x;
    int y;
};

Point getPoint() {
    Point p;
    p.x = 100;
    p.y = 200;
    return p;
}

int main() {
    Point p = getPoint();
    std::cout << "x: " << p.x << ", y: " << p.y << std::endl;
    return 0;
}

上面的代码中,我们定义了一个Point结构体,并实现了一个getPoint函数,该函数返回一个Point结构体。在主函数中,我们调用了getPoint函数,并输出了返回的Point结构体的x和y属性。

使用引用参数

我们可以使用引用参数作为函数的参数来返回多个值。在函数中,对引用参数的修改会直接影响调用方。

例如:

void getValues(int& a, int& b) {
    a = 10;
    b = 20;
}

int main() {
    int x, y;
    getValues(x, y);
    std::cout << "x: " << x << ", y: " << y << std::endl;
    return 0;
}

上面的代码中,我们定义了一个getValues函数,该函数接受两个引用参数a和b。在函数中,我们将a和b的值设置为10和20。在主函数中,我们调用了getValues函数,并输出了a和b的值。

使用tuple

我们可以使用tuple来返回多个值。tuple是C++11中引入的一个新类型,它可以容纳任意数量和类型的值。

例如:

#include <tuple>

std::tuple<int, double, std::string> getValues() {
    int a = 10;
    double b = 3.14;
    std::string c = "Hello, World!";
    return std::make_tuple(a, b, c);
}

int main() {
    auto values = getValues();
    std::cout << "a: " << std::get<0>(values) << ", b: " << std::get<1>(values) << ", c: " << std::get<2>(values) << std::endl;
    return 0;
}

上面的代码中,我们定义了一个getValues函数,该函数返回一个tuple类型的值。在函数中,我们将三个不同类型的值打包为一个tuple。在主函数中,我们调用了getValues函数,并使用std::get函数获取tuple中的各个值。

以上是几种常用的方法来返回多个值。根据实际情况,我们可以选择其中的一种或多种方法来实现我们的需求。