当前位置:  开发笔记 > 编程语言 > 正文

向量,迭代器和std :: find

如何解决《向量,迭代器和std::find》经验,为你挑选了3个好方法。

有没有办法在不同的向量中使用不同类型的迭代器?或者,是否有一个函数将向量中的元素的位置作为整数返回?

std::vector::iterator it;        // Iterator

// monsterQueue is a  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  vector
    bot.monsterCoordX.at(it) = PosX; // monsterCoordX is  vector
    bot.monsterCoordY.at(it) = PosY; // monsterCoordY is  vector too
}

这是一些示例代码,有没有人有任何指针?



1> Timbo..:
index = std::distance( monsterQueue.begin(), it );



2> Frederik Sli..:

简单算一算

it - bot.monsterQueue.begin()

获得索引.



3> Nitin Bhide..:

尝试

std::vector::iterator it;        // Iterator

// monsterQueue is a  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  vector
    bot.monsterCoordX.at(idx) = PosX; // monsterCoordX is  vector
    bot.monsterCoordY.at(idx) = PosY; // monsterCoordY is  vector too
}

也可能更好的想法是创建一个包含4个成员'monster',monsterDist和coordinateX以及coordinateY的结构,并将结构对象存储在向量中.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有