线性搜索类对象的数组
linear searching an array of class objects
我设置了一个线性搜索算法来搜索它工作的类对象数组,但输出不匹配,当我在数组中搜索特定名称时,可以找到数组的第一个和第三个值,但找不到第二个值。
下面是我的代码,感谢您的帮助。
int linsearch(string val)
{
for (int j=0; j <= 3; j++)
{
if (player[j].getLastName()==val)
return j ;
}
return 1 ;
}
void showinfo()
{
string search;
int found ;
cout << "Please Enter The Player's Last Name : " ;
cin >> search ;
found=linsearch(search);
if (found==1)
{
cout << "n There is no player called " << search ;
}
else
{
cout << "n First Name : " << player[found].getFirstName() << "n" << "Last Name : " << player[found].getLastName() <<
"n" << "Age : " << player[found].getAge() << "n" << "Current Team : " << player[found].getCurrentTeam() <<
"n" << "Position : " << player[found].getPosition() << "n" << "Status : " << player[found].getStatus() << "nn";
}
cin.get() ;
menu() ;
}
因为您将第二个元素的索引用作"未找到"代码:
int linsearch(string val)
{
for (int j=0; j <= 3; j++)
{
if (player[j].getLastName()==val)
return j ;
}
return 1 ;
}
您应该返回不能成为索引的内容,例如 -1
。或者更好的是,使用std::find_if。
第二个元素的索引与标记"未找到"条件的值相同。
使用无效索引(如 -1
)标记"未找到"条件:
int linsearch(string val)
{
for (int j=0; j <= 3; j++)
{
if (player[j].getLastName()==val)
return j ;
}
return -1;
}
然后在调用函数中检查-1
:
if (found==-1)
{
cout << "n There is no player called " << search ;
}
做这样的事情...如果未找到,则返回任何其他整数,如"-1"
int linsearch(string val)
{
for (int j=0; j <= 3; j++)
{
if (player[j].getLastName()==val)
return j ;
}
return -1 ;
}
void showinfo()
{
string search;
int found ;
cout << "Please Enter The Player's Last Name : " ;
cin >> search ;
found=linsearch(search);
if (found == -1)
{
cout << "n There is no player called " << search ;
}
[...]
相关文章:
- 销毁C++中动态分配的内存(数组对象)
- 数组对象的生存期是否在重用其元素存储时结束?
- 为什么顶点数组对象会导致错误?
- 具有纯虚函数和指针数组对象类型的父类的指针数组
- 这是使用构造函数初始化数组对象的最佳方法吗?
- OpenGL 顶点数组对象与 tinyobjloader
- 将数组/对象/结构列表从C#库中传递给C MFC应用程序
- C++ RapidJson 帮助反序列化数组对象
- ptrdiff_t可以表示指向同一数组对象元素的指针的所有减法吗?
- 检查成员函数是否返回临时对象或数组对象
- 为什么 std::variant 不能容纳数组对象类型,而联合可以?
- 当数组对象以函数参数传递时,为什么复制构造函数会自称
- 如何使用箭头指针打印出一类数组对象,这些对象中有多个分数
- C++17 std::shared_ptr<> 类数组对象的重载运算符 []
- 添加两个具有运算符重载的数组对象,从而导致分段错误
- opengl:两个不同的矢量可以绑定到同一个顶点数组对象吗
- 使用相同的数据填充数组对象或使用指针
- 方法用于最快的分配,并且不需要将动态大小的数组对象作为局部变量
- 如何将2d数组对象传递给c++中的函数
- ReferenceTable溢出(jni-android),数组对象释放