找到的東西我有一個這樣的載體: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); } –