我正在编写一个简单的函数,该函数遍历数组中的元素。如果找到了元素,则返回或打印“找到元素”,如果没有,则返回未找到值。
我的脑袋现在一片空白。救命!
DispatchQueue.main.async {
if self.exporter!.status == AVAssetExportSession.Status.completed {
PHPhotoLibrary.shared().performChanges({
let assetRequest = PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: self.exporter!.outputURL!)
let placeHolder = assetRequest?.placeholderForCreatedAsset})
{ (isSuccess, error) in
if isSuccess {
} else{
}
}
}
}
}```
它同时返回找到和未找到。
答案 0 :(得分:1)
您将获得两个输出,因为这就是您的代码所做的。找到匹配项时,输出“ found”,然后输出break
循环,然后继续执行程序的其余部分。然后,无论循环是找到还是找不到,您都无条件输出“未找到”。
有几种解决方法。
在中断循环之前设置一个标志,直到循环结束才输出:
#include <iostream>
using namespace std;
int main(){
int arr[] = {1,11,111};
int size = sizeof(arr)/sizeof(arr[0]);
int option = 999;
bool found = false;
if (arr[i] != '\0'){
for (int i = 0; i < size; i++){
if (arr[i] == option){
found = true;
break;
}
}
}
if (found)
cout << "found" << endl;
else
cout << "not found" << endl;
return 0;
}
或者找到匹配项后立即return
:
#include <iostream>
using namespace std;
int main(){
int arr[] = {1,11,111};
int size = sizeof(arr)/sizeof(arr[0]);
int option = 999;
if (arr[i] != '\0'){
for (int i = 0; i < size; i++){
if (arr[i] == option){
cout << "found" << endl;
return 0;
}
}
}
cout << "not found" << endl;
return 0;
}
或者不要手动搜索,请改用标准std::find()
算法:
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int arr[] = {1,11,111};
int size = sizeof(arr)/sizeof(arr[0]);
int *arrEnd = &arr[size];
int option = 999;
if (find(arr, arrEnd, option) != arrEnd)
cout << "found" << endl;
else
cout << "not found" << endl;
return 0;
}