如何用循环和条件判断检查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
相关产品推荐
相关产品推荐

