C++函数返回多个变量
[序]:
首先,非常感謝最近結識到的一個好朋友,是他給了我這樣的一個idea,讓我決定寫下這篇博文。
如果這篇博文恰好能幫助閱讀到這篇博文的你,我覺得,還是有必要同時去感謝下他。
[正文]:
C++的返回的話,對于很多剛接觸C++不久的人來說,一般會是直接返會返會標準庫自帶的類型,如(float,double,int,char或者是string)。隨著實力的提高和遇到的題目的難度的提高,會有部分題目,或者是部分內容要求到去返回多個變量,或者是組合變量。部分人,可能會由于是超前學習,或者什么的,遇到困惑。而我會在這篇文章中,盡自己所能去講解清楚。
[前提]:
為了描述,我會圍繞著一個題目,來進行講解;
[題目]:
在一個二維數組中,返回我們想要的值的位置。(x,y)
第一個版本:
描述:運用了pair(STL內容,不用擔心,這個只是一個很幫助的工具,操作起來也是非常容易的)不需要調用其他什么庫。#include<iostream> using namespace 就好了。
 
typedef pair<int,int> pInt;pInt f3(vector< vector<int> > VII,int n) {for (int i = 0; i < VII.size(); ++i) {for (int j = 0; j < VII[i].size(); ++j) {if (VII[i][j] == n) {return {i,j};}}} }
為了描述的方便,我在這使用了typedef,只是為了表述清楚。如果您先學過Python,想必也會知道,import ...as..這樣的操作了。大致是一個意思。
不用擔心,我寫了一個沒有typedef的。
pair<int,int> f3(vector< vector<int> > VII,int n) {for (int i = 0; i < VII.size(); ++i) {for (int j = 0; j < VII[i].size(); ++j) {if (VII[i][j] == n) {return {i,j};}}} }至于怎么使用這個返回值,我寫了一個在main函數中的片段,供大家使用。
pInt ans2 = f3(VII,12);cout << ans2.first<< " "<< ans2.second<< endl;
而這時的VII,即是二維的vector;
 
第二個版本:采用vector<int>實現
vector<int> f2(vector< vector<int> > VII,int n) {for (int i = 0; i < VII.size(); ++i) {for (int j = 0; j < VII[i].size(); ++j) {if (VII[i][j] == n) {vector <int> v;v.push_back(i);v.push_back(j);return v;}}} }
同樣,在main函數中,用一個vector<int>來記錄的。
vector<int> ans = f2(VII,12);if (ans.size() == 2) {cout << ans[0]<< " "<< ans[1]<< endl; }
第三個版本:用vector來返回,但是,用的是int a[100][100]
vector<int> f1(int a[100][100],int n) {//find a[i][j] == n return {i,j};for (int i = 0; i < 100; ++i) {for (int j = 0; j < 100; ++j) {if (a[i][j] == n) {vector<int> v;v.push_back(i);v.push_back(j); return v;}}} }
這其實與之前的第二個版本沒有太多的區別。
 
第四個版本:
描述:用struct的結構體來做,優點是,你可以返回的不是像pair一樣有數量限制,像vector一樣必須要求是一樣的類型。缺點就是,你得理解類(class)。當然,你要是一個JAVA工程師(膜,您可以不用看的),或者是未來的JAVA工程師,那這個還是推薦你看一看。
struct Node{int x,y;Node(int xx = -1,int yy = -1):x(xx),y(yy){}; };Node f3(vector< vector<int> > VII,int n) {for (int i = 0; i < VII.size(); ++i) {for (int j = 0; j < VII[i].size(); ++j) {if (VII[i][j] == n) {return Node(i,j);}}} }
總結
以上是生活随笔為你收集整理的C++函数返回多个变量的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: [简单题]自定义取余(三种解法)C++实
 - 下一篇: 模拟Sum函数