You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用循环和条件判断检查vector中是否存在指定整数,不存在则返回-1?

问题分析与修正

你的代码核心问题在于循环内的else分支过早返回-1:只要第一个元素和seek不匹配,函数就直接返回-1,根本没机会检查vector里的其他元素。

修正后的代码

#include <iostream>
#include <vector>

using namespace std;

int find(const std::vector<int>& v, int seek) {
    // 遍历整个vector
    for (int i = 0; i < v.size(); i++) {
        if (seek == v[i]) {
            // 找到目标,立即返回索引
            return i;
        }
    }
    // 遍历完所有元素都没找到,返回-1
    return -1;
}

int main() {
    cout << find({1, 2, 3, 4, 5, 6, 7, 8}, 28) << endl;
}

关键修正点

  • 移除了循环内的else { return -1; }:只有当整个循环结束后,确认所有元素都不匹配时,才返回-1。
  • 删除了无用的int ind = 1;变量,这个变量在原代码中没有实际作用。
  • 调整了函数和main的顺序:原代码中find函数定义在main之后,编译器会找不到函数声明,所以把find移到main前面(也可以在main前添加int find(const std::vector<int>& v, int seek);的声明)。

补充说明

  • 如果vectorutils.h是你自定义的工具头文件,可以保留,否则可以删除。
  • 使用using namespace std;后,std::vector可以简化为vector,函数参数里的std::vector也可以保留,不影响运行。

内容的提问来源于stack exchange,提问作者novi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:48:41