C++ 如何搜索向量并获得元素在c+中的位置+;? int搜索(向量和数字,int numtofId){ int numberSize=numbers.size(); for(int i=0;i

C++ 如何搜索向量并获得元素在c+中的位置+;? int搜索(向量和数字,int numtofId){ int numberSize=numbers.size(); for(int i=0;i,c++,C++,我的函数search应该在一个向量中搜索numToFind,如果找到它,它将返回位置。但是,当我运行这个函数时,它总是给我-1。您返回-1太早了。您的函数甚至不搜索向量的其余部分 int search(vector<int>& numbers, int numToFind){ int numberSize = numbers.size(); for (int i = 0; i < numberSize; i++){ if(numbers.

我的函数search应该在一个向量中搜索numToFind,如果找到它,它将返回位置。但是,当我运行这个函数时,它总是给我-1。

您返回-1太早了。您的函数甚至不搜索向量的其余部分

int search(vector<int>& numbers, int numToFind){
    int numberSize = numbers.size();
    for (int i = 0; i < numberSize; i++){
        if(numbers.at(i) == numToFind){
            return i;
        }
        else{
            return -1;
        }
    }
}
int搜索(std::vector&numbers,int numtofId){
int numberSize=numbers.size();
for(int i=0;i

如果需要基于一的索引,请返回
i+1

它们是否已排序<代码>标准::二进制搜索
。否则,
std::find
。没有理由自己编写代码。但至少要使向量
常数
。你不能修改它。它们是未排序的,例如3109250。什么是“狐狸”?看起来你应该改为比较'numToFind'。我明白为什么我不应该在这么早的时候就得到返回-1,因为它只比较向量的第一个值。至于确定-1意味着找不到任何数据,我不确定如何检查。
int search(std::vector<int>& numbers, int numToFind){
    int numberSize = numbers.size();
    for (int i = 0; i < numberSize; i++){
        if(numbers.at(i) == numToFind){
            return i;
        }
        // A return statement here would cut the loop too early
    }
    return -1; // Didn't find anything
}