C++函数返回多个变量
来源:互联网 发布:fate extra 知乎 编辑:程序博客网 时间:2024/05/10 22:47
[序]:
首先,非常感谢最近结识到的一个好朋友,是他给了我这样的一个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);}}}}
阅读全文
1 0
- c#函数返回多个变量
- C++函数返回多个变量
- C函数返回局部变量
- C 函数返回局部变量
- C函数返回局部变量
- c 函数 返回局部变量
- C函数返回局部变量
- oracle函数返回一个变量包含多个属性
- C语言之函数返回局部变量
- C语言---函数返回局部变量
- c/c++函数返回局部变量数组
- 函数多个返回值(返回多个参数/局部变量)通过双重指针来实现
- js函数返回多个返回值
- C语言返回2个变量的方法
- 函数多个“返回值”
- 函数返回多个地址
- C返回多个参数
- C语言的那些秘密之---函数返回局部变量
- 完整渲染过程——从URL到页面
- Codeforces round438 C. Qualification Rounds
- Codeforces 868B. Race Against Time 模拟
- Linux源码包和RPM包的的区别以及RPM包服务管理方式与源码包服务管理方式
- 【fzu 2205 据说题目很水】
- C++函数返回多个变量
- 好久没写过博客了。。。洛谷 P2850 [USACO06DEC] 虫洞Wormholes
- BZOJ 1584 [Usaco2009 Mar]Cleaning Up 打扫卫生 动态规划
- The Fewest Coins POJ
- FFmpeg网络传输协议
- 占位符,SQL注入?
- 互联网各行业视力表大盘点,程序猿的亮了!
- 趣图:你能Get到笑点么?
- JavaScript——BOM学习