找到的东西我有一个这样的载体:C++中的矢量
struct RIFT_MONSTER_SPAWN
{
DWORD dwWorldId;
D3DXVECTOR3 vPos;
};
vector<RIFT_MONSTER_SPAWN> vecMSpawn;
正如你可以看到它将于2个值dwWorldId
和D3DXVECTOR3 vPos;
vPos
将举行x,y,z
值。
现在我想要做的是循环真正的向量,如果worldId
匹配worldId
是beeing通过。它应该返回vPos
,这是相关的worldId
。如果使用std::find find_all
和count
。 但它总是返回错误 二进制==找不到操作符,它需要一个类型为
所以我有点卡在这个。任何帮助,将不胜感激。
祝好。
这是给我的问题
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_vecMSpawnPoint在.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);
}
这不是一个向量,这是一个结构,即使是D3DXVECTOR3也是一个结构。您应该发布导致错误的代码。 – 2016-12-31 07:50:06
使用std:find_if并提供您自己的比较函数。 – Jonas
void CRiftMatch :: GetMoverSpawnPoints(dwWorldId) std :: vector vecSpawn = CRiftMng :: GetInstance() - > m_vecMSpawnPoint; \t std :: vector :: iterator it = std :: find(vecSpawn.begin(),vecSpawn.end(),dwWorldId); (“\ n GetMoverSpawn%d”,* it); } –