C++在 vector 中找到一些东西

标签 c++ vector

我有一个这样的 vector :

struct RIFT_MONSTER_SPAWN
{
    DWORD dwWorldId;
    D3DXVECTOR3 vPos;
};

vector<RIFT_MONSTER_SPAWN> vecMSpawn;

如您所见,它将包含 2 个值 dwWorldIdD3DXVECTOR3 vPos; vPos 将保存 x,y,z 值。

现在我想要做的是循环 true vector ,如果 worldId 与正在传递的 worldId 匹配。它应该返回与 worldId 相关的 vPos

如果有使用std::find find_allcount。 但它总是返回错误 binary == no operator found which takes a left hand operator of 类型

所以我有点卡在这上面了。任何帮助将不胜感激。

谨致问候。

这是给我带来问题的代码

void CRiftMatch::GetMoverSpawnPoints(dwWorldId)
{
    std::vector<RIFT_MONSTER_SPAWN> vecSpawn = CRiftMng::GetInstance()->m_vecMSpawnPoint;
    std::vector<RIFT_MONSTER_SPAWN>::iterator it = std::find(vecSpawn.begin(), vecSpawn.end(), dwWorldId);
    OUTPUTDEBUGSTRING("\n GetMoverSpawn %d", *it);
}

m_vecMSawnPoint 在.h 文件中定义为

vector<RIFT_MONSTER_SPAWN> m_vecMSpawnPoint;

还要填写它,我正在使用此代码

while (Lua.TableLoop(-2))
        {
            RIFT_MONSTER_SPAWN rSpawnPoint;
            rSpawnPoint.dwWorldId = static_cast<int>(CScript::GetDefineNum(Lua.GetFieldToString(-1, "dwWorldId")));
            rSpawnPoint.vPos.x = static_cast<float>(Lua.GetFieldToNumber(-1, "x"));
            rSpawnPoint.vPos.y = static_cast<float>(Lua.GetFieldToNumber(-1, "y"));
            rSpawnPoint.vPos.z = static_cast<float>(Lua.GetFieldToNumber(-1, "z"));

            m_vecMSpawnPoint.push_back(rSpawnPoint);
            Lua.Pop(1);
        }

最佳答案

您必须修改结构才能在查找期间比较值:

struct RIFT_MONSTER_SPAWN
{
    DWORD dwWorldId;
    D3DXVECTOR3 vPos;

    bool operator () ( const RIFT_MONSTER_SPAWN & m ) const
    {
        return m.dwWorldId == dwWorldId;
    }
};

RIFT_MONSTER_SPAWN monsterToFind;
monsterToFind.dwWorldId = dwWorldId;

it = std::find_if( vecSpawn.begin(), vecSpawn.end(), monsterToFind);

也许只是一种类型,但在您的代码中,您有

void CRiftMatch::GetMoverSpawnPoints(dwWorldId)

但应该是

void CRiftMatch::GetMoverSpawnPoints(DWORD dwWorldId)

关于C++在 vector 中找到一些东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41406473/

相关文章:

删除所有最小值和最大值,然后在 R 中求平均值

c++ - 如何将文件中的团队信息解析并存储到类中?

c++ - 如何在 C++ 中获取两个 vector 共有的字符?

python - 使用余弦定律计算向量 (Python)

C++ vector 下标超出范围第 1201 行

c++ - 带有时间戳的 qDebug 控制台输出

c++ - 使用 boost C++ 更改 json 值无效

C++ 用 ostream 以外的东西重载运算符 <<

c++ - 用于桌面应用程序的 Twitter API 库?

c++ - 库需要 QApplication。如何在Qt Quick项目中使用QApplication?