为了账号安全,请及时绑定邮箱和手机立即绑定

向量,结构和std :: find

向量,结构和std :: find

C++
阿波罗的战车 2019-11-14 15:29:26
再次给我带来了载体。我希望我不会太烦人。我有一个这样的结构:struct monster {    DWORD id;    int x;    int y;    int distance;    int HP;};所以我创建了一个向量:std::vector<monster> monsters;但是现在我不知道如何搜索向量。我想在向量中找到怪物的ID。DWORD monster = 0xFFFAAA;it = std::find(bot.monsters.begin(), bot.monsters.end(), currentMonster);但是显然这是行不通的。我只想遍历该结构的.id元素,但我不知道该怎么做。非常感谢您的帮助。谢谢 !
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

std::find_if:


it = std::find_if(bot.monsters.begin(), bot.monsters.end(), 

        boost::bind(&monster::id, _1) == currentMonster);

或编写没有增强功能的函数对象。看起来像这样


struct find_id : std::unary_function<monster, bool> {

    DWORD id;

    find_id(DWORD id):id(id) { }

    bool operator()(monster const& m) const {

        return m.id == id;

    }

};


it = std::find_if(bot.monsters.begin(), bot.monsters.end(), 

         find_id(currentMonster));


查看完整回答
反对 回复 2019-11-14
?
隔江千里

TA贡献1906条经验 获得超10个赞

怎么样:


std::find_if(monsters.begin(), 

             monsters.end(), 

             [&cm = currentMonster]

             (const monster& m) -> bool { return cm == m; }); 


查看完整回答
反对 回复 2019-11-14
?
忽然笑

TA贡献1806条经验 获得超5个赞

您需要编写自己的搜索谓词:


struct find_monster

{

    DWORD id;

    find_monster(DWORD id) : id(id) {}

    bool operator () ( const monster& m ) const

    {

        return m.id == id;

    }

};


it = std::find_if( monsters.begin(), monsters.end(), find_monster(monsterID));


查看完整回答
反对 回复 2019-11-14
  • 3 回答
  • 0 关注
  • 516 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信