有没有办法在不同的向量中使用不同类型的迭代器?或者,是否有一个函数将向量中的元素的位置作为整数返回?
std::vector<DWORD>::iterator it; // Iterator
// monsterQueue is a <DWORD> vector
it = std::find(bot.monsterQueue.begin(), bot.monsterQueue.end(), object);
// Check do we have the object in the queue
if(it != bot.monsterQueue.end()) // If we do have it
{
bot.monsterDists.at(it) = mobDist; // monsterDists is <int> vector
bot.monsterCoordX.at(it) = PosX; // monsterCoordX is <int> vector
bot.monsterCoordY.at(it) = PosY; // monsterCoordY is <int> vector too
}
这是一些示例代码,有人有任何指针吗?
答案 0 :(得分:12)
index = std::distance( monsterQueue.begin(), it );
答案 1 :(得分:6)
简单计算
it - bot.monsterQueue.begin()
获取索引。
答案 2 :(得分:6)
尝试
std::vector<DWORD>::iterator it; // Iterator
// monsterQueue is a <DWORD> vector
it = std::find(bot.monsterQueue.begin(), bot.monsterQueue.end(), object);
// Check do we have the object in the queue
if(it != bot.monsterQueue.end()) // If we do have it
{
size_t idx = it - bot.monsterQueue.begin()
bot.monsterDists.at(idx) = mobDist; // monsterDists is <int> vector
bot.monsterCoordX.at(idx) = PosX; // monsterCoordX is <int> vector
bot.monsterCoordY.at(idx) = PosY; // monsterCoordY is <int> vector too
}
也可能更好的想法是创建一个包含4个成员'monster',monsterDist和coordinateX以及coordinateY的结构,并将结构对象存储在向量中。
答案 3 :(得分:1)
您可以在std :: vectors中使用随机访问:
DWORD find_this = 0x0;
int pos = 0;
for (; i<monsterQueue.size(); ++i)
{
if (monsterQueue[i]==find_this)
break;
}
在循环之后,pos将是循环破坏的位置,即find_this
所在的位置。当然,除非find_this
不在矢量中。
答案 4 :(得分:1)
您是否考虑过将monsterQueue的基础类型更改为包含或包含对monsterDists等的引用/指针的对象