在数组中查找元素,如果找到则返回找到,否则返回未找到

时间:2019-11-12 03:10:25

标签: c++

我正在编写一个简单的函数,该函数遍历数组中的元素。如果找到了元素,则返回或打印“找到元素”,如果没有,则返回未找到值。

我的脑袋现在一片空白。救命!

            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{

                        }
                    }
                }
            }
        }```

它同时返回找到和未找到。

1 个答案:

答案 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;
}