gpt4 book ai didi

c++ - 如何在 vector 中搜索结构项?

转载 作者:太空狗 更新时间:2023-10-29 19:59:24 25 4
gpt4 key购买 nike

我正在尝试使用 vector 实现创建一个库存系统,但我似乎遇到了一些麻烦。我在使用我制作的结构时遇到了问题。注意:这实际上不在游戏代码中,这是我用来测试我对 vector 和结构的知识的单独解决方案!

struct aItem
{
string itemName;
int damage;
};

int main()
{
aItem healingPotion;
healingPotion.itemName = "Healing Potion";
healingPotion.damage= 6;

aItem fireballPotion;
fireballPotion.itemName = "Potion of Fiery Balls";
fireballPotion.damage = -2;

vector<aItem> inventory;
inventory.push_back(healingPotion);
inventory.push_back(healingPotion);
inventory.push_back(healingPotion);
inventory.push_back(fireballPotion);

if(find(inventory.begin(), inventory.end(), fireballPotion) != inventory.end())
{
cout << "Found";
}

system("PAUSE");
return 0;
}

前面的代码给我以下错误:

1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(3186): error C2678: binary '==' : no operator found which takes a left-hand operand of type 'aItem' (or there is no acceptable conversion)

还有更多的错误,如果你需要它,请告诉我。我敢打赌这是一件小而愚蠢的事情,但我已经研究了两个多小时了。提前致谢!

最佳答案

find 查找与 vector 中的项目相同的内容。您说您想使用字符串进行搜索,但是您还没有为此编写代码;它试图比较整个结构。而且您还没有编写代码来比较整个结构,所以它给了您一个错误。

最简单的解决方案是使用显式循环代替 find

如果您想通过字符串查找 事物,请使用find_if 变体并编写一个查看字符串的谓词函数。或者,如果您想通过整个结构查找,您可以在比较itemName 的结构上定义一个operator ==损坏

或者您也可以考虑使用 mapunordered_map 数据结构来代替 vector。 map 容器设计用于使用键(例如字符串)进行快速查找。

关于c++ - 如何在 vector 中搜索结构项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13317126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com