我班内的搜索功能无法正常工作

时间:2016-11-03 01:44:10

标签: c++

我有一个名为“Division”的类,里面有一个向量数组。

#include <vector>
#include "Player.h"
#include <string>
#include "role.h"
class Division
{
public:
    std::string m_name;
    std::vector<Player> m_division;
    int search(int lower, int upper, Role role);
};

上面的课程中有很多功能,但它们不应该相关。 “玩家”玩家类也非常简单,

#include <string>
#include "Role.h"
class Player
{
public:
    std::string m_name;
    std::string m_battletag;
    std::string m_email;
    int m_sr;
    Role m_role;
};

Role是一个简单的枚举,可以是ROLE_SUPPORT,ROLE_DPS,ROLE_TANK或ROLE_ANY。 下一个功能是我遇到的问题。玩家的SR应该在0-5000之间,并且我希望能够在上限和下限之间搜索玩家的向量,这是以下代码应该做的。

int Division::search(int lower, int upper, Role role)
{
    for (int i = 0; i < m_division.size(); ++i)
{
    if ((m_division[i].m_sr <= upper && m_division[i].m_sr >= upper) && m_division[i].m_role == role)
    {
        return i;
    }
}
cout << "None found within that range and with that role\n";
return -1;
}

不幸的是它没有。事实上,无论我做什么,它返回-1并打印我创建的错误消息。我知道有一个解决方案,它寻找什么,所以为什么它不会工作? 如果我像在main中那样称呼它,

cout << NA.getName(NA.search(2100, 2200, ROLE_ANY));

(NA是一个分区)它总是返回-1,即使我知道2100和2200之间有一个拥有role_any的玩家,并且它在第3位。请帮助。

我将完整的程序上传到github here 任何帮助将不胜感激。 Testing.csv是一堆随机生成的数字和字符串,它正确地为程序格式化。 “Scrub Cup work”是main驻留的地方,所有类的解析函数都在各自的.h和.cpp文件中

1 个答案:

答案 0 :(得分:0)

if((m_division [i] .m_sr &lt; = upper &amp;&amp; m_division [i] .m_sr &gt; = upper

if(a&lt; = b和a&gt; = b)总是假,除非a完全等于b