c++ - vector 、结构和 std::find

标签 c++ data-structures find vector

又是 vector 。我希望我不会太烦人。我有一个这样的结构:

struct monster 
{
    DWORD id;
    int x;
    int y;
    int distance;
    int HP;
};

所以我创建了一个 vector :

std::vector<monster> monsters;

但现在我不知道如何通过 vector 进行搜索。我想在 vector 中找到怪物的 ID。

DWORD monster = 0xFFFAAA;
it = std::find(bot.monsters.begin(), bot.monsters.end(), currentMonster);

但显然它不起作用。我只想遍历结构的 .id 元素,但我不知道该怎么做。非常感谢您的帮助。谢谢!

最佳答案

std::find_if :

it = std::find_if(bot.monsters.begin(), bot.monsters.end(), 
        boost::bind(&monster::id, _1) == currentMonster);

如果你没有boost,也可以编写你自己的函数对象。看起来像这样

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));

关于c++ - vector 、结构和 std::find,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/589985/

相关文章:

c++ - 为什么 const 引用在分配左值和右值时表现不同?

data-structures - 每个节点存储多个值的树

java - 使用Java查找行中的重复值

shell - 在 ("{}"中多次使用当前文件名 "find -exec")?

c++ - QString,解析和替换一些特定的部分

c++ - 第二个 cin 被跳过或不能正常工作

c - C 中的冒泡排序错误代码! [Deitel C 第 6 版]

objective-c - Objective-C 中是否存在强类型集合?

java - 从 Java 运行 Linux 命令 - runtime.exe

c++ - 继承 ostream 和 streambuf 问题与 xsputn 和溢出