c++ - 如何在对象 vector 中找到特定值

标签 c++ vector

我有一个 Weapon 类的 vector ,然后循环并将 id 值添加到 vector 中。

Weapon* weapon;
vector<Weapon*> weaponVector;

for (int i = 0; i < 10; i++)
{
    weapon = new Weapon(i);
    weaponVector.push_back(weapon);
}

然后我有一个 vector 迭代器来尝试在 vector 中找到指定的数字。

vector<Weapon*>::iterator findIt;
findIt = find(weaponVector.begin(), weaponVector.end(), 5);

在 Weapon 类中,我创建了一个运算符重载来检查 id 是否相同。

bool Weapon::operator==(const Weapon& rhs)
{
    return (rhs.id == id);
}

问题:

我试图在 weaponVector 中找到数字 5,但我一直收到此错误:

C2446 '==': no conversion from 'const int' to 'Weapon *

我尝试过的事情:

findIt = find(weaponVector.begin(), weaponVector.end(), Weapon(5));

Weapon five = Weapon(5);
findIt = find(weaponVector.begin(), weaponVector.end(), five);

无论我尝试什么,我都会不断出错。非常感谢任何帮助。

最佳答案

如果使用 C++11,只需使用带有 lambda 函数的 std::find_if:

#include <algorithm>
//...
int number_to_find = 5;
auto findIt = std::find_if(weaponVector.begin(), weaponVector.end(), 
                          [&](Weapon* ptr) { return ptr->id == number_to_find;});

关于c++ - 如何在对象 vector 中找到特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35120960/

相关文章:

c++ - CreateFile(...) 具有异常路径如 "C:\\test\\\\file.txt"含义

c++ - C++ 图形和 Windows 编程

c - #QNANO 在 C 中表示或表示什么?

c++ - 将类的实例插入 vector C++

r - 检查R中的value == integer(0)

C++ 使用未声明的标识符 'make_unique'

c++ - 哪种方法更快? back_inserter 或调整大小

c++ - 该公式在 "accumulate"中采用哪些参数?

c++ - 确定 C++ vector 中下降/上升沿的简单算法是什么?

c++:如何将数据插入结构成员(位于 vector 中的结构)