c++怎么从函数返回两个值
时间: 2024-10-19 07:04:24 浏览: 12
在 C++ 中,函数通常只能返回单个值。但是,如果你需要返回多个值,有几种方法可以实现:
1. **联合体(Struct/Union)**:
使用联合体可以在一个变量中存储多个不同类型的数据,然后在函数内部操作这个联合体。当从函数返回时,整个联合体会被复制。例如:
```cpp
struct Pair {
int a;
double b;
};
Pair getValues() {
Pair result = {42, 3.14};
return result;
}
```
2. **指针/引用**:
可以通过返回指向内部数据结构的指针或者返回一个包含多个成员的结构体/类的指针,然后解引用获取数据。但这并不是真正的“返回两个值”,而是间接地控制返回的对象。
3. **std::pair或自定义组合类型**:
如果你想要创建一个标准容器,如 `std::pair` 或者你自己的组合类型,可以直接返回这种类型的实例:
```cpp
std::pair<int, double> getValues() {
return {42, 3.14};
}
```
4. **使用空对象和赋值**:
函数返回一个聚合类型,比如 `std::tuple`,并且让调用者自行解析。用户可以选择接受一个返回值并解构它,或者忽略它(如果不需要这些值):
```cpp
std::tuple<int, double> getValues() -> std::tuple<int, double> {
return std::make_tuple(42, 3.14);
}
// 调用示例
auto [a, b] = getValues();
```
阅读全文