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

向量,结构和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

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
?
隔江千里

怎么样:


std::find_if(monsters.begin(), 

             monsters.end(), 

             [&cm = currentMonster]

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


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

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


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

添加回答

回复

举报

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