Ang*_*hoi 6 c++ return-type auto
如何在执行期间以结构返回类型终止“自动”类型函数?
当满足以下某些条件时,我想对自动功能“ Func”(而不是整个程序)进行转义:
#include "stdafx.h"
#include <vector>
#include <tchar.h>
#include <iostream>
using namespace std;
auto Func(int B, vector<int> A) {
for (int a = 0; a < B; a++)
{
A.push_back(a);
if (a == 2)
{
cout << " Terminate Func! " << endl;
// return; I want to terminate 'Func' at this point
}
}
struct result { vector <int> A; int B; };
return result{ A, B };
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> A;
int B = 5;
auto result = Func(B, A);
A = result.A;
B = result.B;
for (int a = 0; a < A.size(); a++)
{
cout << A[a] << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
我不想使用“ exit()”,因为我只想终止一个函数而不是程序。
您可以result在函数顶部返回一个定义返回类型,然后返回一个“空”实例,如下所示:
auto Func(int B, vector<int> A) {
struct result { vector <int> A; int B; };
for (int a = 0; a < B; a++)
{
A.push_back(a);
if (a == 2)
{
return result{{}, 0};
}
}
return result{ A, B };
}
Run Code Online (Sandbox Code Playgroud)
如果您不希望在满足早返回条件时返回有效对象,请考虑std::optional<result>从函数(特别std::nullopt是在早返回分支)中返回a 。但这需要C ++ 17。