??本文介紹在C++語言中,使用一個函數(shù),并返回兩個及以上、同類型或不同類型的返回值的具體方法。
??對于C++語言而言,其不能像Python等語言一樣在一個函數(shù)中返回多個返回值;但是我們也會經(jīng)常遇到需要返回兩個甚至更多個值的需求。針對這種情況,我們可以通過pair
、tuple
(元組)等數(shù)據(jù)結(jié)構(gòu),實現(xiàn)C++函數(shù)返回兩個或多個返回值的需求。本文就以pair
為例,介紹二者的具體用法。
??首先,我們需要將C++函數(shù)的類型定義為pair<>
,其中<>
內(nèi)為兩個返回值各自的數(shù)據(jù)類型。例如,如以下代碼所示,我們定義了一個函數(shù)raster_to_series
,函數(shù)類型為pair<double**, double*>
,表示這一函數(shù)的返回值有兩個,且兩個返回值的數(shù)據(jù)類型分別為double**
與double*
。
pair<double**, double*> raster_to_series(double** pafScanline)
{
// 這里是函數(shù)的代碼部分
// ...
return make_pair(pixel_paf, miss_rate_paf);
}
??其中,在函數(shù)的返回值部分,我們需要基于make_pair()
函數(shù),將數(shù)據(jù)類型分別為double**
與double*
的兩個變量放在一起,形成pair
這一結(jié)構(gòu),再進(jìn)行返回。
??其次,以上pair
、make_pair()
等都是定義在std
這一命名空間內(nèi)的,因此需要首先聲明一下這一命名空間;再次,在調(diào)用這一函數(shù)前,我們首先需要定義一個pair <double**, double*>
類型的變量,并將函數(shù)的返回值賦給它。
using namespace std;
int main() {
pair <double**, double*> pair_paf = raster_to_series(pafScanline);
double** pixel_paf = pair_paf.first;
double* miss_rate_paf = pair_paf.second;
return 0;
}
??隨后,通過.first
與.second
命令,分別獲取pair<double**, double*>
中的兩個變量。
??至此,我們即實現(xiàn)了通過一個C++函數(shù)返回兩個返回值的方法。
??如果需要返回三個或更多的返回值,則可以基于tuple
(元組)這一數(shù)據(jù)結(jié)構(gòu),用類似于上述操作的方法來實現(xiàn)。舉一個例子,假如我們想通過一個函數(shù)返回三個返回值,就需要將前述代碼中函數(shù)的類型定義為tuple<int, double, int>
,將make_pair()
函數(shù)更改為make_tuple()
,且在調(diào)用函數(shù)時首先將返回值賦給一個tuple<int, double, int>
類型的數(shù)據(jù),再依次從這一元組類型的數(shù)據(jù)中提取出三個返回值的具體數(shù)值。文章來源:http://www.zghlxwxcb.cn/news/detail-710934.html
??至此,大功告成。文章來源地址http://www.zghlxwxcb.cn/news/detail-710934.html
到了這里,關(guān)于C++函數(shù)如何具有多個返回值?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!